home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 3 / Amiga Tools 3.iso / rexx / defaultsender.avm < prev    next >
Text File  |  1994-06-24  |  98KB  |  3,530 lines

  1. /* TITLE: avm:rexx/defaultsender.avm */
  2. /* we want results! Otherwise, we wouldn't get anything from RESULT */
  3. options results
  4.  
  5. /* Need to make sure that stdtail.avm is also included */
  6. signal on halt
  7. signal on novalue
  8. signal on syntax
  9. signal on break_c
  10.  
  11. /* needed for some of the functions we use */
  12. call addlib("rexxsupport.library", 0, -30, 0)
  13.  
  14. /* a higher than normal priority since calls are important to us :) */
  15. call pragma('priority', 1)
  16.  
  17. /* ensure that commands are directed to the correct server */
  18. parse arg servername .
  19. address value servername
  20.  
  21.  
  22. parse upper arg servername mailbox magiccookie sendType .
  23.  
  24. /* If type is voice, goto sendVoice.  Otherwise, go to sendFax */
  25.  
  26. call loadLogEntry(mailbox, magiccookie)
  27.  
  28. if log.returnNumber = '' & upper(sendType) ~= 'MANUAL' then do
  29.   log.returnStatus = 'No Tel#'
  30.   log.returnRetry = 0
  31.   signal sendVoiceDone
  32. end
  33. if log.filename = '' then do
  34.   log.returnStatus = 'No File'
  35.   log.returnRetry = 0
  36.   signal sendVoiceDone
  37. end
  38.  
  39. if upper(sendType) = 'MANUAL' then numberToDial = 'MAN!'; else numberToDial = log.returnNumber
  40. if upper(log.type) = 'VOICE' then signal sendVoice
  41. else if upper(log.type) = 'FAX' then signal sendFax
  42. log.returnstatus = 'Not Voice/Fax'
  43. log.returnretry = 0
  44. signal sendVoiceDone
  45.  
  46. /* Going to send a voice file */
  47.  
  48. /* Dial up to three times */
  49.  
  50. sendVoice:
  51. numTries = 3
  52.  
  53. sendVoiceRedial:
  54. 'dial' log.returnnumber
  55. action = rc
  56. select
  57.   when action = 0 then nop
  58.   when action = 8 then signal sendVoiceAgain
  59.   when action = 10 then signal sendVoiceAgain
  60.   when action = 12 then do; log.returnStatus = 'Abort'; log.returnRetry = 0; signal sendVoiceDone; end
  61.   when action = 14 then do; log.returnStatus = 'Error'; log.returnRetry = 0; signal sendVoiceDone; end
  62.   when action = 16 then do; log.returnStatus = 'Error'; log.returnRetry = 0; signal sendVoiceDone; end
  63.   otherwise signal arexxerror
  64. end
  65. signal sendVoiceConnected
  66.  
  67. sendVoiceAgain:
  68. 'requiremode' 'Voice'
  69.  
  70. 'delay' 5
  71. action = rc
  72. select
  73.   when action = 0 then nop
  74.   when action = 12 then do; log.returnStatus = 'Abort'; log.returnRetry = 0; signal sendVoiceDone; end
  75.   when action = 14 then do; log.returnStatus = 'Error'; log.returnRetry = 0; signal sendVoiceDone; end
  76.   when action = 16 then do; log.returnStatus = 'Error'; log.returnRetry = 0; signal sendVoiceDone; end
  77.   otherwise signal arexxerror
  78. end
  79.  
  80.  
  81. sendVoiceRetry:
  82. numTries = numTries - 1
  83. if numTries <= 0 then do
  84.   log.returnStatus = 'Busy'
  85.   signal sendVoiceDone
  86. end
  87. signal sendVoiceRedial
  88.  
  89. sendVoiceConnected:
  90. actualFileName = log.fileName
  91. if verify(actualFileName, '/:', 'M') = 0 then
  92.   actualFileName = voiceFile(mailbox, actualFileName)
  93. actualAltFileName = ''
  94. if symbol('log.altFileName') = 'VAR' then actualAltFileName = log.altFileName
  95. actualAltFileName = voiceFile(mailbox, actualAltFileName)
  96.  
  97. numTimes = 5
  98.  
  99. sendVoiceRepeat:
  100. if actualAltFileName = '' then signal sendVoiceSkipIntro
  101.  
  102. 'playvoice' actualAltFileName
  103. action = rc
  104. select
  105.   when action = 0 then nop
  106.   when action = 1 then nop
  107.   when action = 4 then do; log.returnStatus = 'Fax?'; log.returnRetry = 0; signal sendVoiceDone; end
  108.   when action = 5 then do; log.returnStatus = 'Data?'; log.returnRetry = 0; signal sendVoiceDone; end
  109.   when action = 8 then do; if numTimes = 3 then signal sendVoiceAgain; else signal sendVoiceBusy; end
  110.   when action = 12 then do; log.returnStatus = 'Abort'; log.returnRetry = 0; signal sendVoiceDone; end
  111.   when action = 14 then nop
  112.   when action = 16 then nop
  113.   otherwise signal arexxerror
  114. end
  115.  
  116. 'flushphonebuffer'
  117.  
  118. sendVoiceSkipIntro:
  119. 'playvoice' actualFileName
  120. action = rc
  121. select
  122.   when action = 0 then nop
  123.   when action = 1 then nop
  124.   when action = 4 then do; log.returnStatus = 'Fax?'; log.returnRetry = 0; signal sendVoiceDone; end
  125.   when action = 5 then do; log.returnStatus = 'Data?'; log.returnRetry = 0; signal sendVoiceDone; end
  126.   when action = 8 then do; if numTimes = 3 then signal sendVoiceAgain; else signal sendVoiceBusy; end
  127.   when action = 12 then do; log.returnStatus = 'Abort'; log.returnRetry = 0; signal sendVoiceDone; end
  128.   when action = 14 then do; log.returnStatus = 'Error'; log.returnRetry = 0; signal sendVoiceDone; end
  129.   when action = 16 then do; log.returnStatus = 'Error'; log.returnRetry = 0; signal sendVoiceDone; end
  130.   otherwise signal arexxerror
  131. end
  132.  
  133. 'flushphonebuffer'
  134.  
  135. sendVoiceMenu:
  136. call aapresentmenu('avm:voices/SendVoice', '019#*', '1')
  137. action = result
  138. select
  139.   when action = '=0' then signal sendVoiceMenu
  140.   when action = '=1' then signal sendVoiceRepeat
  141.   when action = '=2' then nop
  142.   when action = '=3' then nop
  143.   when action = '=4' then nop
  144.   when action = '=5' then nop
  145.   when action = '=6' then nop
  146.   when action = '=7' then nop
  147.   when action = '=8' then nop
  148.   when action = '=9' then do; log.returnRetry = 0; log.returnStatus = 'Sent+'; call updateLogEntry(mailbox, magicCookie); call aamaintenancemode(log.origmailbox); signal answerVoiceDone; end
  149.   when action = '=#' then signal answerVoiceDone
  150.   when action = '=*' then signal sendVoiceOK
  151.   when action = 4 then do; log.returnStatus = 'Fax?'; log.returnRetry = 0; signal sendVoiceDone; end
  152.   when action = 5 then do; log.returnStatus = 'Data?'; log.returnRetry = 0; signal sendVoiceDone; end
  153.   when action = 8 then do; if numTimes = 3 then signal sendVoiceAgain; else signal sendVoiceBusy; end
  154.   when action = 10 then nop
  155.   when action = 12 then do; log.returnStatus = 'Abort'; log.returnRetry = 0; signal sendVoiceDone; end
  156.   when action = 14 then do; log.returnStatus = 'Error'; log.returnRetry = 0; signal sendVoiceDone; end
  157.   when action = 16 then do; log.returnStatus = 'Error'; log.returnRetry = 0; signal sendVoiceDone; end
  158.   otherwise signal arexxerror
  159. end
  160.  
  161. numTimes = numTimes - 1
  162. if numTimes <= 0 then do
  163.   signal sendVoiceTimedOut
  164. end
  165. signal sendVoiceRepeat
  166.  
  167. sendVoiceTimedOut:
  168. log.returnStatus = 'Sent-TimedOut'
  169. log.returnRetry = 0
  170. signal sendVoiceDone
  171.  
  172. sendVoiceBusy:
  173. log.returnRetry = 0
  174. log.returnStatus = 'Sent-Busy'
  175. signal sendVoiceDone
  176.  
  177. sendVoiceOK:
  178. log.returnRetry = 0
  179. log.returnStatus = 'Sent+'
  180.  
  181. sendVoiceDone:
  182. if log.returnRetry > 0 then do
  183.   log.returnRetry = log.returnRetry - 1
  184.   log.time = cTime() + log.returnInterval * 60
  185. end
  186. call updateLogEntry(mailbox, magicCookie)
  187. exit
  188.  
  189. startup:
  190. /* Pressing 0 usually gets us here */
  191.  
  192. answerVoiceDone:
  193. /* Pressing * gets us here */
  194. exit
  195.  
  196. /* Going to send a fax file */
  197.  
  198. sendFax:
  199. options failat 50
  200. signal off syntax
  201.  
  202. 'requiremode' 'Command'
  203.  
  204. 'setserial' '19200' '8' 'N' '1' '7Wire'
  205. action = rc
  206. select
  207.   when action = 0 then nop
  208.   when action = 14 then nop
  209.   when action = 16 then nop
  210.   otherwise signal arexxerror
  211. end
  212.  
  213. 'assumemode' 'Unknown'
  214.  
  215. isTrapFax:
  216. faxprogram = getclip('AVMFaxProgram')
  217. if upper(faxprogram) = 'TRAPFAX' then do
  218.  
  219. mypara = 'File ' || log.filename || ' call ' || log.returnnumber
  220. address command 'TrapFax:TFaxDoor >NIL:' mypara ' noowndev'
  221. sendok = rc
  222. log.returnstatus = 'Error'
  223.  
  224. isGPFax:
  225. end; else if upper(faxprogram) = 'GPFAX' & show('p', 'REXX_GPFAX') then do
  226.  
  227. address rexx_gpfax 'listen'
  228. address rexx_gpfax 'sendfax' log.filename 'to' log.returnnumber
  229. sendok = rc
  230. address rexx_gpfax 'reportlog' 'T' 3
  231. log.returnstatus = result
  232. address rexx_gpfax 'unlisten'
  233.  
  234. isEFax:
  235. end; else if upper(faxprogram) = 'EFAX' then do
  236.  
  237. /* now we need to find all files that match */
  238. toSend = ''
  239. base = upper(voiceFile(mailbox, log.fileName) || '.');
  240. do i = 1 to 999
  241.   if exists(base || right(i, 3, '0')) then
  242.     toSend = toSend base || right(i, 3, '0')
  243.   else break
  244. end
  245.  
  246. address command 'avm:gnu/efax -p' servername '-t' '"' || compress(numberToDial) || '"' toSend
  247. if rc = 0 then sendOK = 0
  248. else sendOK = 10
  249.  
  250. isNeither:
  251. end; else do
  252.   log.returnStatus = 'Fax Prog?'
  253.   log.returnRetry = 0
  254.   call updateLogEntry(mailbox, magiccookie)
  255. end
  256.  
  257. sendFaxDone:
  258. if sendok < 5 then do; log.returnretry = 0; log.returnstatus = 'Sent OK'; end
  259. else do; log.returnRetry = log.returnRetry - 1; log.time = cTime() + log.returnInterval * 60; end
  260. call updateLogEntry(mailbox, magiccookie)
  261.  
  262. 'delay' 5
  263. action = rc
  264. select
  265.   when action = 0 then nop
  266.   when action = 12 then signal stdabort
  267.   when action = 14 then signal stderror
  268.   when action = 16 then signal stderror
  269.   otherwise signal arexxerror
  270. end
  271.  
  272. 'writeline' 'AT+FCLASS=0'
  273.  
  274. 'readline' '2'
  275. action = rc
  276. if action = 0 then value = result
  277. select
  278.   when action = 0 then nop
  279.   when action = 10 then signal stdtimedout
  280.   when action = 12 then signal stdabort
  281.   when action = 14 then signal stderror
  282.   when action = 16 then signal stderror
  283.   otherwise signal arexxerror
  284. end
  285.  
  286. 'readline' '2'
  287. action = rc
  288. if action = 0 then value = result
  289. select
  290.   when action = 0 then nop
  291.   when action = 10 then signal stdtimedout
  292.   when action = 12 then signal stdabort
  293.   when action = 14 then signal stderror
  294.   when action = 16 then signal stderror
  295.   otherwise signal arexxerror
  296. end
  297.  
  298. /* We're done sending a fax */
  299. exit
  300.  
  301. /* TITLE: avm:rexx/stdtail.avm */
  302. /* This is the standard tail */
  303. exit
  304.  
  305. exit
  306.  
  307. mailboxDir: procedure
  308.     parse arg mailbox
  309.  
  310.     return 'avm:' || mailbox || '/'
  311.  
  312. logFile: procedure
  313.     parse arg mailbox, magiccookie
  314.  
  315.     return 'avm:' || mailbox || '/logs/' || magiccookie
  316.  
  317. voiceFile: procedure
  318.     parse arg mailbox, magiccookie
  319.  
  320.         if (verify(magiccookie, '/:', 'M') = 0) then
  321.           return 'avm:' || mailbox || '/voices/' || magiccookie
  322.         else
  323.           return magiccookie
  324.  
  325. makeUniqueFile: procedure
  326.     if arg() ~= 0 then do
  327.         rc = "makeUniqueFile: bad args"
  328.         signal error
  329.     end
  330.     return address() || '.' || date('i') || '.' || time('s') || '.' || random(1, 999, time('s'))
  331.  
  332. convertToDate: procedure
  333.     if arg() ~= 1 then do
  334.         rc = "convertToDate: bad args"
  335.         signal error
  336.     end
  337.     parse arg timeInC
  338.  
  339.     actualTime = (timeInC - (2922)*86400) // (86400)
  340.     actualDate = (timeInC - actualTime - 2922*86400) % 86400
  341.  
  342.     return actualDate /* returning it in 'internal' format */
  343.  
  344. convertToTime: procedure
  345.     if arg() ~= 1 then do
  346.         rc = "convertToTime: bad args"
  347.         signal error
  348.     end
  349.     parse arg timeInC
  350.     
  351.     actualTime = (timeInC - (2922)*86400) // (86400)
  352.  
  353.     return actualTime
  354.  
  355. cTime: procedure
  356.     /* 2922 = 8*365 + 2 */
  357.     /* 86400 = 24*60*60 */
  358.     return (date('i')+2922)*86400 + time('s')
  359.  
  360. /* this returns a handle that you must use after initializing log. */
  361. initLogEntry: procedure expose log.
  362.     if arg() ~= 0 then do
  363.         rc = "initLogEntry: bad args"
  364.         signal error
  365.     end
  366.     
  367.     drop log.
  368.         log. = ''
  369.  
  370.         acidname = getclip(address() || 'CIDNAME')
  371.         acidnumber = getclip(address() || 'CIDNUMBER')
  372.  
  373.     /* 2922 = 8*365 + 2 */
  374.     /* 86400 = 24*60*60 */
  375.     log.time = (date('i')+2922)*86400 + time('s')
  376.     log.cidname = acidname
  377.     log.cidnumber = acidnumber
  378.  
  379.     return
  380.  
  381. loadLogEntry: procedure expose log.
  382.     if arg() ~= 2 then do
  383.         rc = "loadLogEntry: bad args"
  384.         signal error
  385.     end
  386.     parse arg mailbox, handle
  387.  
  388.         drop log.
  389.         log. = ''
  390.  
  391.     if ~exists(mailboxDir(mailbox)) then do
  392.         call showDebugger('Dir=' || mailboxDir(mailbox) 'does not exist')
  393.         return
  394.     end
  395.  
  396.     opened = open(handle, logFile(mailbox, handle), 'r')
  397.         if opened then do
  398.         call showDebugger('Loading entry' logFile(mailbox, handle))
  399.         do while ~eof(handle)
  400.             line = readln(handle)
  401.             parse upper var line variable '=' value
  402.             log.variable = value
  403.         end
  404.         call close(handle)
  405.     end; else call showDebugger('Could not load' logFile(mailbox, handle))
  406.     return
  407.  
  408. /* pass a handle here */
  409. saveLogEntry: procedure expose log.
  410.     if arg() ~= 2 then do
  411.         rc = "saveLogEntry: bad args"
  412.         signal error
  413.     end
  414.     parse arg mailbox, handle
  415.  
  416.     if ~exists(mailboxDir(mailbox)) then do
  417.         call showDebugger('Dir=' || mailboxDir(mailbox) 'does not exist')
  418.         return
  419.     end
  420.  
  421.     opened = open(handle, logFile(mailbox, handle), 'w')
  422.  
  423.     if opened then do
  424.         call showDebugger('Saving entry' logFile(mailbox, handle))
  425.         call writeln(handle, 'TYPE=' || log.type)
  426.         call writeln(handle, 'TIME=' || log.time)
  427.         call writeln(handle, 'LENGTH=' || log.length)
  428.  
  429.         call writeln(handle, 'ORIGMAILBOX=' || log.origmailbox)
  430.  
  431.         call writeln(handle, 'CIDNAME=' || log.cidname)
  432.         call writeln(handle, 'CIDNUMBER=' || log.cidnumber)
  433.  
  434.         call writeln(handle, 'COMMENT=' || log.comment)
  435.  
  436.         call writeln(handle, 'FILENAME=' || log.filename)
  437.         call writeln(handle, 'ALTFILENAME=' || log.altfilename)
  438.  
  439.         call writeln(handle, 'RETURNNUMBER=' || log.returnnumber)
  440.         call writeln(handle, 'RETURNSENDFUNC=' || log.returnsendfunc)
  441.         call writeln(handle, 'RETURNSTATUS=' || log.returnstatus)
  442.  
  443.         call writeln(handle, 'RETURNRETRY=' || log.returnretry)
  444.         call writeln(handle, 'RETURNINTERVAL=' || log.returninterval)
  445.  
  446.         call close(handle)
  447.         address rexx 'broadcast' 'addtomailbox' mailbox handle
  448.     end; else call showDebugger('Could not save' logFile(mailbox, handle))
  449.  
  450.     return
  451.  
  452. /* pass a handle here */
  453. updateLogEntry: procedure expose log.
  454.     if arg() ~= 2 then do
  455.         rc = "updateLogEntry: bad args"
  456.         signal error
  457.     end
  458.     parse arg mailbox, handle
  459.  
  460.     if ~exists(mailboxDir(mailbox)) then do
  461.         call showDebugger('Dir=' || mailboxDir(mailbox) 'does not exist')
  462.         return
  463.     end
  464.  
  465.     if ~exists(logFile(mailbox, handle)) then do
  466.         call showDebugger('Unable to update non-existent' logFile(mailbox, handle))
  467.         return
  468.     end
  469.     opened = open(handle, logFile(mailbox, handle), 'w')
  470.  
  471.     if opened then do
  472.         call showDebugger('Updating entry' logFile(mailbox, handle))
  473.         call writeln(handle, 'TYPE=' || log.type)
  474.         call writeln(handle, 'TIME=' || log.time)
  475.         call writeln(handle, 'LENGTH=' || log.length)
  476.  
  477.         call writeln(handle, 'ORIGMAILBOX=' || log.origmailbox)
  478.  
  479.         call writeln(handle, 'CIDNAME=' || log.cidname)
  480.         call writeln(handle, 'CIDNUMBER=' || log.cidnumber)
  481.  
  482.         call writeln(handle, 'COMMENT=' || log.comment)
  483.  
  484.         call writeln(handle, 'FILENAME=' || log.filename)
  485.         call writeln(handle, 'ALTFILENAME=' || log.altfilename)
  486.  
  487.         call writeln(handle, 'RETURNNUMBER=' || log.returnnumber)
  488.         call writeln(handle, 'RETURNSENDFUNC=' || log.returnsendfunc)
  489.         call writeln(handle, 'RETURNSTATUS=' || log.returnstatus)
  490.  
  491.         call writeln(handle, 'RETURNRETRY=' || log.returnretry)
  492.         call writeln(handle, 'RETURNINTERVAL=' || log.returninterval)
  493.  
  494.         call close(handle)
  495.         address rexx 'broadcast' 'refreshmailboxentry' mailbox handle
  496.     end; else call showDebugger('Could not update' logFile(mailbox, handle))
  497.  
  498.     return
  499.  
  500.  
  501.  
  502. showDebugger: procedure
  503.     if arg() ~= 1 then do
  504.         say "showDebugger: ERROR"
  505.         exit 20
  506.     end
  507.  
  508.     parse arg debuggerInfo
  509.     
  510.     firstLine = sourceline(1)
  511.     parse var firstLine '/*' 'TITLE:' title '*/'
  512.     if showlist('p', 'AVMLOGGER') then
  513.         address 'AVMLOGGER' 'add' title ':' debuggerInfo
  514.     else
  515.         say title ':' debuggerInfo
  516.  
  517.     return 
  518.  
  519. /*-----------------------------------------------------------------------*/
  520. /*                         signal processing                             */
  521.  
  522. arexxerror:
  523. error:
  524.     call showDebugger("Error" rc "at line" sigl)
  525.     exit 20
  526.  
  527. break_c:
  528. halt:
  529.     call showDebugger("Halt/Break_C at line" sigl)
  530.     exit 20
  531.  
  532. novalue:
  533.     call showDebugger("No value at line" sigl)
  534.     exit 20
  535.  
  536. syntax:
  537.     call showDebugger("Syntax error" rc "at line" sigl)
  538.     exit 20
  539.  
  540. exit
  541.  
  542. /* this requires logfunctions.avm */
  543.  
  544. loadMailbox: procedure expose mailbox.
  545.     if arg() ~= 1 then do
  546.         rc = "loadMailbox: bad args"
  547.         signal error
  548.     end
  549.  
  550.         mailbox. = ''
  551.     parse arg mailbox
  552.  
  553.     handle = 'mailboxconfig'
  554.     opened = open(handle, mailboxDir(mailbox) || 'mailbox.cfg', 'r')
  555.     if opened then do
  556.         do while ~eof(handle)
  557.             line = readln(handle)
  558.             parse upper var line variable '=' value
  559.             mailbox.variable = value
  560.         end
  561.         call close(handle)
  562.     end
  563.     return
  564.  
  565. /* pass a handle here */
  566. saveMailbox: procedure expose mailbox.
  567.     if arg() ~= 1 then do
  568.         rc = "saveMailbox: bad args"
  569.         signal error
  570.     end
  571.     parse arg mailbox
  572.  
  573.     handle = 'mailboxconfig'
  574.     opened = open(handle, mailboxDir(mailbox) || 'mailbox.cfg', 'w')
  575.  
  576.     if opened then do
  577.         call writeln(handle, 'PASSWORD=' || mailbox.password)
  578.  
  579.         call writeln(handle, 'AUTOFAXFORWARDB=' || mailbox.autofaxforwardb)
  580.         call writeln(handle, 'AUTOFAXFORWARD=' || mailbox.autofaxforward)
  581.         call writeln(handle, 'AUTOFAXFORWARDSCRIPT=' || mailbox.autofaxforwardscript)
  582.  
  583.         call writeln(handle, 'AUTOFORWARDB=' || mailbox.autoforwardb)
  584.         call writeln(handle, 'AUTOFORWARDONDEMAND=' || mailbox.autoforwardondemand)
  585.         call writeln(handle, 'AUTOFORWARD=' || mailbox.autoforward)
  586.         call writeln(handle, 'AUTOFORWARDSCRIPT=' || mailbox.autoforwardscript)
  587.  
  588.         call writeln(handle, 'AUTOPAGEB=' || mailbox.autopageb)
  589.         call writeln(handle, 'AUTOPAGEONDEMAND=' || mailbox.autopageondemand)
  590.         call writeln(handle, 'AUTOPAGE=' || mailbox.autopage)
  591.         call writeln(handle, 'AUTOPAGESCRIPT=' || mailbox.autopagescript)
  592.  
  593.         call writeln(handle, 'AUTOALERTB=' || mailbox.autoalertb)
  594.         call writeln(handle, 'AUTOALERTONDEMAND=' || mailbox.autoalertondemand)
  595.         call writeln(handle, 'AUTOALERTSCRIPT=' || mailbox.autoalertscript)
  596.  
  597.         call close(handle)
  598.     end
  599.  
  600.     return
  601.  
  602. /* TITLE: avm:rexx/getnumber.avm */
  603. getnumber:
  604. procedure
  605.  
  606. aagetnumberagain:
  607. 'playvoice' 'avm:voices/GetNumber'
  608. action = rc
  609. select
  610.   when action = 0 then nop
  611.   when action = 1 then nop
  612.   when action = 4 then signal stdfax
  613.   when action = 5 then signal stddata
  614.   when action = 8 then signal stdbusy
  615.   when action = 12 then signal stdabort
  616.   when action = 14 then signal stderror
  617.   when action = 16 then signal stderror
  618.   otherwise signal arexxerror
  619. end
  620.  
  621. 'readkeysuntil' '#' '15' '7'
  622. action = rc
  623. if action = 0 then value = result
  624. select
  625.   when action = 0 then do; number = value; end
  626.   when action = 4 then signal stdfax
  627.   when action = 5 then signal stddata
  628.   when action = 8 then signal stdbusy
  629.   when action = 10 then do; number = ''; end
  630.   when action = 12 then signal stdabort
  631.   when action = 14 then signal stderror
  632.   when action = 16 then signal stderror
  633.   otherwise signal arexxerror
  634. end
  635.  
  636. 'playvoice' 'avm:voices/NumberEntered'
  637. action = rc
  638. select
  639.   when action = 0 then nop
  640.   when action = 1 then nop
  641.   when action = 4 then signal stdfax
  642.   when action = 5 then signal stddata
  643.   when action = 8 then signal stdbusy
  644.   when action = 12 then signal stdabort
  645.   when action = 14 then signal stderror
  646.   when action = 16 then signal stderror
  647.   otherwise signal arexxerror
  648. end
  649.  
  650. call playNumber(number)
  651.  
  652. aagetnumbermenu:
  653. call aapresentmenu('avm:voices/numbercorrect', '02#*', '3')
  654. action = result
  655. select
  656.   when action = '=0' then signal aagetnumbermenu
  657.   when action = '=1' then nop
  658.   when action = '=2' then signal aagetnumberagain
  659.   when action = '=3' then nop
  660.   when action = '=4' then nop
  661.   when action = '=5' then nop
  662.   when action = '=6' then nop
  663.   when action = '=7' then nop
  664.   when action = '=8' then nop
  665.   when action = '=9' then nop
  666.   when action = '=#' then signal aagetnumberdone
  667.   when action = '=*' then signal answerVoiceDone
  668.   when action = 4 then signal stdfax
  669.   when action = 5 then signal stddata
  670.   when action = 8 then signal stdbusy
  671.   when action = 10 then do; number = ''; signal aagetnumberdone; end
  672.   when action = 12 then signal stdabort
  673.   when action = 14 then signal stderror
  674.   when action = 16 then signal stderror
  675.   otherwise signal arexxerror
  676. end
  677.  
  678. aagetnumberdone:
  679. /* We're done.  Number is in 'number' */
  680.  
  681. return number
  682.  
  683.  
  684. /* TITLE: avm:rexx/playnumber.avm */
  685. playnumber:
  686. /* Cycle through value and play each symbol */
  687.  
  688. procedure
  689. parse arg number
  690. say 'playnumber' number
  691.  
  692. do i = 1 to length(number)
  693.   if pos(substr(number, i, 1), '0123456789') > 0 then
  694.     call playnumbranch('playnum' || substr(number, i, 1))
  695.   else if substr(number, i, 1) = '#' then
  696.     call playnumbranch('playnumpound')
  697.   else if substr(number, i, 1) = '*' then
  698.     call playnumbranch('playnumstar')
  699. end
  700. signal playnumdone
  701.  
  702. playnumbranch:
  703. procedure
  704. parse arg label
  705. signal value label
  706. return
  707.  
  708. playnum0:
  709. 'playvoice' 'avm:voices/number00'
  710. action = rc
  711. select
  712.   when action = 0 then nop
  713.   when action = 1 then nop
  714.   when action = 4 then signal stdfax
  715.   when action = 5 then signal stddata
  716.   when action = 8 then signal stdbusy
  717.   when action = 12 then signal stdabort
  718.   when action = 14 then signal stderror
  719.   when action = 16 then signal stderror
  720.   otherwise signal arexxerror
  721. end
  722. return
  723.  
  724. playnum1:
  725. 'playvoice' 'avm:voices/number01'
  726. action = rc
  727. select
  728.   when action = 0 then nop
  729.   when action = 1 then nop
  730.   when action = 4 then signal stdfax
  731.   when action = 5 then signal stddata
  732.   when action = 8 then signal stdbusy
  733.   when action = 12 then signal stdabort
  734.   when action = 14 then signal stderror
  735.   when action = 16 then signal stderror
  736.   otherwise signal arexxerror
  737. end
  738. return
  739.  
  740. playnum2:
  741. 'playvoice' 'avm:voices/number02'
  742. action = rc
  743. select
  744.   when action = 0 then nop
  745.   when action = 1 then nop
  746.   when action = 4 then signal stdfax
  747.   when action = 5 then signal stddata
  748.   when action = 8 then signal stdbusy
  749.   when action = 12 then signal stdabort
  750.   when action = 14 then signal stderror
  751.   when action = 16 then signal stderror
  752.   otherwise signal arexxerror
  753. end
  754. return
  755.  
  756. playnum3:
  757. 'playvoice' 'avm:voices/number03'
  758. action = rc
  759. select
  760.   when action = 0 then nop
  761.   when action = 1 then nop
  762.   when action = 4 then signal stdfax
  763.   when action = 5 then signal stddata
  764.   when action = 8 then signal stdbusy
  765.   when action = 12 then signal stdabort
  766.   when action = 14 then signal stderror
  767.   when action = 16 then signal stderror
  768.   otherwise signal arexxerror
  769. end
  770. return
  771.  
  772. playnum4:
  773. 'playvoice' 'avm:voices/number04'
  774. action = rc
  775. select
  776.   when action = 0 then nop
  777.   when action = 1 then nop
  778.   when action = 4 then signal stdfax
  779.   when action = 5 then signal stddata
  780.   when action = 8 then signal stdbusy
  781.   when action = 12 then signal stdabort
  782.   when action = 14 then signal stderror
  783.   when action = 16 then signal stderror
  784.   otherwise signal arexxerror
  785. end
  786. return
  787.  
  788. playnum5:
  789. 'playvoice' 'avm:voices/number05'
  790. action = rc
  791. select
  792.   when action = 0 then nop
  793.   when action = 1 then nop
  794.   when action = 4 then signal stdfax
  795.   when action = 5 then signal stddata
  796.   when action = 8 then signal stdbusy
  797.   when action = 12 then signal stdabort
  798.   when action = 14 then signal stderror
  799.   when action = 16 then signal stderror
  800.   otherwise signal arexxerror
  801. end
  802. return
  803.  
  804. playnum6:
  805. 'playvoice' 'avm:voices/number06'
  806. action = rc
  807. select
  808.   when action = 0 then nop
  809.   when action = 1 then nop
  810.   when action = 4 then signal stdfax
  811.   when action = 5 then signal stddata
  812.   when action = 8 then signal stdbusy
  813.   when action = 12 then signal stdabort
  814.   when action = 14 then signal stderror
  815.   when action = 16 then signal stderror
  816.   otherwise signal arexxerror
  817. end
  818. return
  819.  
  820. playnum7:
  821. 'playvoice' 'avm:voices/number07'
  822. action = rc
  823. select
  824.   when action = 0 then nop
  825.   when action = 1 then nop
  826.   when action = 4 then signal stdfax
  827.   when action = 5 then signal stddata
  828.   when action = 8 then signal stdbusy
  829.   when action = 12 then signal stdabort
  830.   when action = 14 then signal stderror
  831.   when action = 16 then signal stderror
  832.   otherwise signal arexxerror
  833. end
  834. return
  835.  
  836. playnum8:
  837. 'playvoice' 'avm:voices/number08'
  838. action = rc
  839. select
  840.   when action = 0 then nop
  841.   when action = 1 then nop
  842.   when action = 4 then signal stdfax
  843.   when action = 5 then signal stddata
  844.   when action = 8 then signal stdbusy
  845.   when action = 12 then signal stdabort
  846.   when action = 14 then signal stderror
  847.   when action = 16 then signal stderror
  848.   otherwise signal arexxerror
  849. end
  850. return
  851.  
  852. playnum9:
  853. 'playvoice' 'avm:voices/number09'
  854. action = rc
  855. select
  856.   when action = 0 then nop
  857.   when action = 1 then nop
  858.   when action = 4 then signal stdfax
  859.   when action = 5 then signal stddata
  860.   when action = 8 then signal stdbusy
  861.   when action = 12 then signal stdabort
  862.   when action = 14 then signal stderror
  863.   when action = 16 then signal stderror
  864.   otherwise signal arexxerror
  865. end
  866. return
  867.  
  868. playnumpound:
  869. 'playvoice' 'avm:voices/numberpound'
  870. action = rc
  871. select
  872.   when action = 0 then nop
  873.   when action = 1 then nop
  874.   when action = 4 then signal stdfax
  875.   when action = 5 then signal stddata
  876.   when action = 8 then signal stdbusy
  877.   when action = 12 then signal stdabort
  878.   when action = 14 then signal stderror
  879.   when action = 16 then signal stderror
  880.   otherwise signal arexxerror
  881. end
  882. return
  883.  
  884. playnumstar:
  885. 'playvoice' 'avm:voices/numberstar'
  886. action = rc
  887. select
  888.   when action = 0 then nop
  889.   when action = 1 then nop
  890.   when action = 4 then signal stdfax
  891.   when action = 5 then signal stddata
  892.   when action = 8 then signal stdbusy
  893.   when action = 12 then signal stdabort
  894.   when action = 14 then signal stderror
  895.   when action = 16 then signal stderror
  896.   otherwise signal arexxerror
  897. end
  898. return
  899.  
  900. playnumdone:
  901. /* We're done */
  902. return
  903.  
  904.  
  905. /* TITLE: avm:rexx/playddnumber.avm */
  906. playddnumber:
  907. /* We're going to play a double digit number */
  908.  
  909. procedure
  910. parse arg number
  911. directdd = getclip('AVMDirectDDNumber')
  912. if upper(directdd) = 'YES' then signal playdirectdd
  913.  
  914. if number > 9 & number < 20 then
  915.   call playnumbranch('playnum' || number)
  916. else if number >= 20 & number < 60 then do
  917.   units = number // 10
  918.   tens = number - units
  919.   call playnumbranch('playnum' || tens)
  920.   if units > 0 then call playnumbranch('playnum' || units)
  921. end; else
  922.   call playnumber(number)
  923. signal playddnumdone
  924.  
  925. playdirectdd:
  926. if number < 10 then call playnumber(number)
  927. else call playnumbranch('playnum' || number)
  928. signal playddnumdone
  929.  
  930. playnum10:
  931. 'playvoice' 'avm:voices/number10'
  932. action = rc
  933. select
  934.   when action = 0 then nop
  935.   when action = 1 then nop
  936.   when action = 4 then signal stdfax
  937.   when action = 5 then signal stddata
  938.   when action = 8 then signal stdbusy
  939.   when action = 12 then signal stdabort
  940.   when action = 14 then signal stderror
  941.   when action = 16 then signal stderror
  942.   otherwise signal arexxerror
  943. end
  944. return
  945.  
  946. playnum11:
  947. 'playvoice' 'avm:voices/number11'
  948. action = rc
  949. select
  950.   when action = 0 then nop
  951.   when action = 1 then nop
  952.   when action = 4 then signal stdfax
  953.   when action = 5 then signal stddata
  954.   when action = 8 then signal stdbusy
  955.   when action = 12 then signal stdabort
  956.   when action = 14 then signal stderror
  957.   when action = 16 then signal stderror
  958.   otherwise signal arexxerror
  959. end
  960. return
  961.  
  962. playnum12:
  963. 'playvoice' 'avm:voices/number12'
  964. action = rc
  965. select
  966.   when action = 0 then nop
  967.   when action = 1 then nop
  968.   when action = 4 then signal stdfax
  969.   when action = 5 then signal stddata
  970.   when action = 8 then signal stdbusy
  971.   when action = 12 then signal stdabort
  972.   when action = 14 then signal stderror
  973.   when action = 16 then signal stderror
  974.   otherwise signal arexxerror
  975. end
  976. return
  977.  
  978. playnum13:
  979. 'playvoice' 'avm:voices/number13'
  980. action = rc
  981. select
  982.   when action = 0 then nop
  983.   when action = 1 then nop
  984.   when action = 4 then signal stdfax
  985.   when action = 5 then signal stddata
  986.   when action = 8 then signal stdbusy
  987.   when action = 12 then signal stdabort
  988.   when action = 14 then signal stderror
  989.   when action = 16 then signal stderror
  990.   otherwise signal arexxerror
  991. end
  992. return
  993.  
  994. playnum14:
  995. 'playvoice' 'avm:voices/number14'
  996. action = rc
  997. select
  998.   when action = 0 then nop
  999.   when action = 1 then nop
  1000.   when action = 4 then signal stdfax
  1001.   when action = 5 then signal stddata
  1002.   when action = 8 then signal stdbusy
  1003.   when action = 12 then signal stdabort
  1004.   when action = 14 then signal stderror
  1005.   when action = 16 then signal stderror
  1006.   otherwise signal arexxerror
  1007. end
  1008. return
  1009.  
  1010. playnum15:
  1011. 'playvoice' 'avm:voices/number15'
  1012. action = rc
  1013. select
  1014.   when action = 0 then nop
  1015.   when action = 1 then nop
  1016.   when action = 4 then signal stdfax
  1017.   when action = 5 then signal stddata
  1018.   when action = 8 then signal stdbusy
  1019.   when action = 12 then signal stdabort
  1020.   when action = 14 then signal stderror
  1021.   when action = 16 then signal stderror
  1022.   otherwise signal arexxerror
  1023. end
  1024. return
  1025.  
  1026. playnum16:
  1027. 'playvoice' 'avm:voices/number16'
  1028. action = rc
  1029. select
  1030.   when action = 0 then nop
  1031.   when action = 1 then nop
  1032.   when action = 4 then signal stdfax
  1033.   when action = 5 then signal stddata
  1034.   when action = 8 then signal stdbusy
  1035.   when action = 12 then signal stdabort
  1036.   when action = 14 then signal stderror
  1037.   when action = 16 then signal stderror
  1038.   otherwise signal arexxerror
  1039. end
  1040. return
  1041.  
  1042. playnum17:
  1043. 'playvoice' 'avm:voices/number17'
  1044. action = rc
  1045. select
  1046.   when action = 0 then nop
  1047.   when action = 1 then nop
  1048.   when action = 4 then signal stdfax
  1049.   when action = 5 then signal stddata
  1050.   when action = 8 then signal stdbusy
  1051.   when action = 12 then signal stdabort
  1052.   when action = 14 then signal stderror
  1053.   when action = 16 then signal stderror
  1054.   otherwise signal arexxerror
  1055. end
  1056. return
  1057.  
  1058. playnum18:
  1059. 'playvoice' 'avm:voices/number18'
  1060. action = rc
  1061. select
  1062.   when action = 0 then nop
  1063.   when action = 1 then nop
  1064.   when action = 4 then signal stdfax
  1065.   when action = 5 then signal stddata
  1066.   when action = 8 then signal stdbusy
  1067.   when action = 12 then signal stdabort
  1068.   when action = 14 then signal stderror
  1069.   when action = 16 then signal stderror
  1070.   otherwise signal arexxerror
  1071. end
  1072. return
  1073.  
  1074. playnum19:
  1075. 'playvoice' 'avm:voices/number19'
  1076. action = rc
  1077. select
  1078.   when action = 0 then nop
  1079.   when action = 1 then nop
  1080.   when action = 4 then signal stdfax
  1081.   when action = 5 then signal stddata
  1082.   when action = 8 then signal stdbusy
  1083.   when action = 12 then signal stdabort
  1084.   when action = 14 then signal stderror
  1085.   when action = 16 then signal stderror
  1086.   otherwise signal arexxerror
  1087. end
  1088. return
  1089.  
  1090. playnum20:
  1091. 'playvoice' 'avm:voices/number20'
  1092. action = rc
  1093. select
  1094.   when action = 0 then nop
  1095.   when action = 1 then nop
  1096.   when action = 4 then signal stdfax
  1097.   when action = 5 then signal stddata
  1098.   when action = 8 then signal stdbusy
  1099.   when action = 12 then signal stdabort
  1100.   when action = 14 then signal stderror
  1101.   when action = 16 then signal stderror
  1102.   otherwise signal arexxerror
  1103. end
  1104. return
  1105.  
  1106. playnum30:
  1107. 'playvoice' 'avm:voices/number30'
  1108. action = rc
  1109. select
  1110.   when action = 0 then nop
  1111.   when action = 1 then nop
  1112.   when action = 4 then signal stdfax
  1113.   when action = 5 then signal stddata
  1114.   when action = 8 then signal stdbusy
  1115.   when action = 12 then signal stdabort
  1116.   when action = 14 then signal stderror
  1117.   when action = 16 then signal stderror
  1118.   otherwise signal arexxerror
  1119. end
  1120. return
  1121.  
  1122. playnum40:
  1123. 'playvoice' 'avm:voices/number40'
  1124. action = rc
  1125. select
  1126.   when action = 0 then nop
  1127.   when action = 1 then nop
  1128.   when action = 4 then signal stdfax
  1129.   when action = 5 then signal stddata
  1130.   when action = 8 then signal stdbusy
  1131.   when action = 12 then signal stdabort
  1132.   when action = 14 then signal stderror
  1133.   when action = 16 then signal stderror
  1134.   otherwise signal arexxerror
  1135. end
  1136. return
  1137.  
  1138. playnum50:
  1139. 'playvoice' 'avm:voices/number50'
  1140. action = rc
  1141. select
  1142.   when action = 0 then nop
  1143.   when action = 1 then nop
  1144.   when action = 4 then signal stdfax
  1145.   when action = 5 then signal stddata
  1146.   when action = 8 then signal stdbusy
  1147.   when action = 12 then signal stdabort
  1148.   when action = 14 then signal stderror
  1149.   when action = 16 then signal stderror
  1150.   otherwise signal arexxerror
  1151. end
  1152. return
  1153.  
  1154. playddnumdone:
  1155. /* We're done */
  1156. return
  1157.  
  1158. playnum21:
  1159. 'playvoice' 'avm:voices/number21'
  1160. action = rc
  1161. select
  1162.   when action = 0 then nop
  1163.   when action = 1 then nop
  1164.   when action = 4 then signal stdfax
  1165.   when action = 5 then signal stddata
  1166.   when action = 8 then signal stdbusy
  1167.   when action = 12 then signal stdabort
  1168.   when action = 14 then signal stderror
  1169.   when action = 16 then signal stderror
  1170.   otherwise signal arexxerror
  1171. end
  1172. return
  1173.  
  1174. playnum22:
  1175. 'playvoice' 'avm:voices/number22'
  1176. action = rc
  1177. select
  1178.   when action = 0 then nop
  1179.   when action = 1 then nop
  1180.   when action = 4 then signal stdfax
  1181.   when action = 5 then signal stddata
  1182.   when action = 8 then signal stdbusy
  1183.   when action = 12 then signal stdabort
  1184.   when action = 14 then signal stderror
  1185.   when action = 16 then signal stderror
  1186.   otherwise signal arexxerror
  1187. end
  1188. return
  1189.  
  1190. playnum23:
  1191. 'playvoice' 'avm:voices/number23'
  1192. action = rc
  1193. select
  1194.   when action = 0 then nop
  1195.   when action = 1 then nop
  1196.   when action = 4 then signal stdfax
  1197.   when action = 5 then signal stddata
  1198.   when action = 8 then signal stdbusy
  1199.   when action = 12 then signal stdabort
  1200.   when action = 14 then signal stderror
  1201.   when action = 16 then signal stderror
  1202.   otherwise signal arexxerror
  1203. end
  1204. return
  1205.  
  1206. playnum24:
  1207. 'playvoice' 'avm:voices/number24'
  1208. action = rc
  1209. select
  1210.   when action = 0 then nop
  1211.   when action = 1 then nop
  1212.   when action = 4 then signal stdfax
  1213.   when action = 5 then signal stddata
  1214.   when action = 8 then signal stdbusy
  1215.   when action = 12 then signal stdabort
  1216.   when action = 14 then signal stderror
  1217.   when action = 16 then signal stderror
  1218.   otherwise signal arexxerror
  1219. end
  1220. return
  1221.  
  1222. playnum25:
  1223. 'playvoice' 'avm:voices/number25'
  1224. action = rc
  1225. select
  1226.   when action = 0 then nop
  1227.   when action = 1 then nop
  1228.   when action = 4 then signal stdfax
  1229.   when action = 5 then signal stddata
  1230.   when action = 8 then signal stdbusy
  1231.   when action = 12 then signal stdabort
  1232.   when action = 14 then signal stderror
  1233.   when action = 16 then signal stderror
  1234.   otherwise signal arexxerror
  1235. end
  1236. return
  1237.  
  1238. playnum26:
  1239. 'playvoice' 'avm:voices/number26'
  1240. action = rc
  1241. select
  1242.   when action = 0 then nop
  1243.   when action = 1 then nop
  1244.   when action = 4 then signal stdfax
  1245.   when action = 5 then signal stddata
  1246.   when action = 8 then signal stdbusy
  1247.   when action = 12 then signal stdabort
  1248.   when action = 14 then signal stderror
  1249.   when action = 16 then signal stderror
  1250.   otherwise signal arexxerror
  1251. end
  1252. return
  1253.  
  1254. playnum27:
  1255. 'playvoice' 'avm:voices/number27'
  1256. action = rc
  1257. select
  1258.   when action = 0 then nop
  1259.   when action = 1 then nop
  1260.   when action = 4 then signal stdfax
  1261.   when action = 5 then signal stddata
  1262.   when action = 8 then signal stdbusy
  1263.   when action = 12 then signal stdabort
  1264.   when action = 14 then signal stderror
  1265.   when action = 16 then signal stderror
  1266.   otherwise signal arexxerror
  1267. end
  1268. return
  1269.  
  1270. playnum28:
  1271. 'playvoice' 'avm:voices/number28'
  1272. action = rc
  1273. select
  1274.   when action = 0 then nop
  1275.   when action = 1 then nop
  1276.   when action = 4 then signal stdfax
  1277.   when action = 5 then signal stddata
  1278.   when action = 8 then signal stdbusy
  1279.   when action = 12 then signal stdabort
  1280.   when action = 14 then signal stderror
  1281.   when action = 16 then signal stderror
  1282.   otherwise signal arexxerror
  1283. end
  1284. return
  1285.  
  1286. playnum29:
  1287. 'playvoice' 'avm:voices/number29'
  1288. action = rc
  1289. select
  1290.   when action = 0 then nop
  1291.   when action = 1 then nop
  1292.   when action = 4 then signal stdfax
  1293.   when action = 5 then signal stddata
  1294.   when action = 8 then signal stdbusy
  1295.   when action = 12 then signal stdabort
  1296.   when action = 14 then signal stderror
  1297.   when action = 16 then signal stderror
  1298.   otherwise signal arexxerror
  1299. end
  1300. return
  1301.  
  1302. playnum31:
  1303. 'playvoice' 'avm:voices/number31'
  1304. action = rc
  1305. select
  1306.   when action = 0 then nop
  1307.   when action = 1 then nop
  1308.   when action = 4 then signal stdfax
  1309.   when action = 5 then signal stddata
  1310.   when action = 8 then signal stdbusy
  1311.   when action = 12 then signal stdabort
  1312.   when action = 14 then signal stderror
  1313.   when action = 16 then signal stderror
  1314.   otherwise signal arexxerror
  1315. end
  1316. return
  1317.  
  1318. playnum32:
  1319. 'playvoice' 'avm:voices/number32'
  1320. action = rc
  1321. select
  1322.   when action = 0 then nop
  1323.   when action = 1 then nop
  1324.   when action = 4 then signal stdfax
  1325.   when action = 5 then signal stddata
  1326.   when action = 8 then signal stdbusy
  1327.   when action = 12 then signal stdabort
  1328.   when action = 14 then signal stderror
  1329.   when action = 16 then signal stderror
  1330.   otherwise signal arexxerror
  1331. end
  1332. return
  1333.  
  1334. playnum33:
  1335. 'playvoice' 'avm:voices/number33'
  1336. action = rc
  1337. select
  1338.   when action = 0 then nop
  1339.   when action = 1 then nop
  1340.   when action = 4 then signal stdfax
  1341.   when action = 5 then signal stddata
  1342.   when action = 8 then signal stdbusy
  1343.   when action = 12 then signal stdabort
  1344.   when action = 14 then signal stderror
  1345.   when action = 16 then signal stderror
  1346.   otherwise signal arexxerror
  1347. end
  1348. return
  1349.  
  1350. playnum34:
  1351. 'playvoice' 'avm:voices/number34'
  1352. action = rc
  1353. select
  1354.   when action = 0 then nop
  1355.   when action = 1 then nop
  1356.   when action = 4 then signal stdfax
  1357.   when action = 5 then signal stddata
  1358.   when action = 8 then signal stdbusy
  1359.   when action = 12 then signal stdabort
  1360.   when action = 14 then signal stderror
  1361.   when action = 16 then signal stderror
  1362.   otherwise signal arexxerror
  1363. end
  1364. return
  1365.  
  1366. playnum35:
  1367. 'playvoice' 'avm:voices/number35'
  1368. action = rc
  1369. select
  1370.   when action = 0 then nop
  1371.   when action = 1 then nop
  1372.   when action = 4 then signal stdfax
  1373.   when action = 5 then signal stddata
  1374.   when action = 8 then signal stdbusy
  1375.   when action = 12 then signal stdabort
  1376.   when action = 14 then signal stderror
  1377.   when action = 16 then signal stderror
  1378.   otherwise signal arexxerror
  1379. end
  1380. return
  1381.  
  1382. playnum36:
  1383. 'playvoice' 'avm:voices/number36'
  1384. action = rc
  1385. select
  1386.   when action = 0 then nop
  1387.   when action = 1 then nop
  1388.   when action = 4 then signal stdfax
  1389.   when action = 5 then signal stddata
  1390.   when action = 8 then signal stdbusy
  1391.   when action = 12 then signal stdabort
  1392.   when action = 14 then signal stderror
  1393.   when action = 16 then signal stderror
  1394.   otherwise signal arexxerror
  1395. end
  1396. return
  1397.  
  1398. playnum37:
  1399. 'playvoice' 'avm:voices/number37'
  1400. action = rc
  1401. select
  1402.   when action = 0 then nop
  1403.   when action = 1 then nop
  1404.   when action = 4 then signal stdfax
  1405.   when action = 5 then signal stddata
  1406.   when action = 8 then signal stdbusy
  1407.   when action = 12 then signal stdabort
  1408.   when action = 14 then signal stderror
  1409.   when action = 16 then signal stderror
  1410.   otherwise signal arexxerror
  1411. end
  1412. return
  1413.  
  1414. playnum38:
  1415. 'playvoice' 'avm:voices/number38'
  1416. action = rc
  1417. select
  1418.   when action = 0 then nop
  1419.   when action = 1 then nop
  1420.   when action = 4 then signal stdfax
  1421.   when action = 5 then signal stddata
  1422.   when action = 8 then signal stdbusy
  1423.   when action = 12 then signal stdabort
  1424.   when action = 14 then signal stderror
  1425.   when action = 16 then signal stderror
  1426.   otherwise signal arexxerror
  1427. end
  1428. return
  1429.  
  1430. playnum39:
  1431. 'playvoice' 'avm:voices/number39'
  1432. action = rc
  1433. select
  1434.   when action = 0 then nop
  1435.   when action = 1 then nop
  1436.   when action = 4 then signal stdfax
  1437.   when action = 5 then signal stddata
  1438.   when action = 8 then signal stdbusy
  1439.   when action = 12 then signal stdabort
  1440.   when action = 14 then signal stderror
  1441.   when action = 16 then signal stderror
  1442.   otherwise signal arexxerror
  1443. end
  1444. return
  1445.  
  1446. playnum41:
  1447. 'playvoice' 'avm:voices/number41'
  1448. action = rc
  1449. select
  1450.   when action = 0 then nop
  1451.   when action = 1 then nop
  1452.   when action = 4 then signal stdfax
  1453.   when action = 5 then signal stddata
  1454.   when action = 8 then signal stdbusy
  1455.   when action = 12 then signal stdabort
  1456.   when action = 14 then signal stderror
  1457.   when action = 16 then signal stderror
  1458.   otherwise signal arexxerror
  1459. end
  1460. return
  1461.  
  1462. playnum42:
  1463. 'playvoice' 'avm:voices/number42'
  1464. action = rc
  1465. select
  1466.   when action = 0 then nop
  1467.   when action = 1 then nop
  1468.   when action = 4 then signal stdfax
  1469.   when action = 5 then signal stddata
  1470.   when action = 8 then signal stdbusy
  1471.   when action = 12 then signal stdabort
  1472.   when action = 14 then signal stderror
  1473.   when action = 16 then signal stderror
  1474.   otherwise signal arexxerror
  1475. end
  1476. return
  1477.  
  1478. playnum43:
  1479. 'playvoice' 'avm:voices/number43'
  1480. action = rc
  1481. select
  1482.   when action = 0 then nop
  1483.   when action = 1 then nop
  1484.   when action = 4 then signal stdfax
  1485.   when action = 5 then signal stddata
  1486.   when action = 8 then signal stdbusy
  1487.   when action = 12 then signal stdabort
  1488.   when action = 14 then signal stderror
  1489.   when action = 16 then signal stderror
  1490.   otherwise signal arexxerror
  1491. end
  1492. return
  1493.  
  1494. playnum44:
  1495. 'playvoice' 'avm:voices/number44'
  1496. action = rc
  1497. select
  1498.   when action = 0 then nop
  1499.   when action = 1 then nop
  1500.   when action = 4 then signal stdfax
  1501.   when action = 5 then signal stddata
  1502.   when action = 8 then signal stdbusy
  1503.   when action = 12 then signal stdabort
  1504.   when action = 14 then signal stderror
  1505.   when action = 16 then signal stderror
  1506.   otherwise signal arexxerror
  1507. end
  1508. return
  1509.  
  1510. playnum45:
  1511. 'playvoice' 'avm:voices/number45'
  1512. action = rc
  1513. select
  1514.   when action = 0 then nop
  1515.   when action = 1 then nop
  1516.   when action = 4 then signal stdfax
  1517.   when action = 5 then signal stddata
  1518.   when action = 8 then signal stdbusy
  1519.   when action = 12 then signal stdabort
  1520.   when action = 14 then signal stderror
  1521.   when action = 16 then signal stderror
  1522.   otherwise signal arexxerror
  1523. end
  1524. return
  1525.  
  1526. playnum46:
  1527. 'playvoice' 'avm:voices/number46'
  1528. action = rc
  1529. select
  1530.   when action = 0 then nop
  1531.   when action = 1 then nop
  1532.   when action = 4 then signal stdfax
  1533.   when action = 5 then signal stddata
  1534.   when action = 8 then signal stdbusy
  1535.   when action = 12 then signal stdabort
  1536.   when action = 14 then signal stderror
  1537.   when action = 16 then signal stderror
  1538.   otherwise signal arexxerror
  1539. end
  1540. return
  1541.  
  1542. playnum47:
  1543. 'playvoice' 'avm:voices/number47'
  1544. action = rc
  1545. select
  1546.   when action = 0 then nop
  1547.   when action = 1 then nop
  1548.   when action = 4 then signal stdfax
  1549.   when action = 5 then signal stddata
  1550.   when action = 8 then signal stdbusy
  1551.   when action = 12 then signal stdabort
  1552.   when action = 14 then signal stderror
  1553.   when action = 16 then signal stderror
  1554.   otherwise signal arexxerror
  1555. end
  1556. return
  1557.  
  1558. playnum48:
  1559. 'playvoice' 'avm:voices/number48'
  1560. action = rc
  1561. select
  1562.   when action = 0 then nop
  1563.   when action = 1 then nop
  1564.   when action = 4 then signal stdfax
  1565.   when action = 5 then signal stddata
  1566.   when action = 8 then signal stdbusy
  1567.   when action = 12 then signal stdabort
  1568.   when action = 14 then signal stderror
  1569.   when action = 16 then signal stderror
  1570.   otherwise signal arexxerror
  1571. end
  1572. return
  1573.  
  1574. playnum49:
  1575. 'playvoice' 'avm:voices/number49'
  1576. action = rc
  1577. select
  1578.   when action = 0 then nop
  1579.   when action = 1 then nop
  1580.   when action = 4 then signal stdfax
  1581.   when action = 5 then signal stddata
  1582.   when action = 8 then signal stdbusy
  1583.   when action = 12 then signal stdabort
  1584.   when action = 14 then signal stderror
  1585.   when action = 16 then signal stderror
  1586.   otherwise signal arexxerror
  1587. end
  1588. return
  1589.  
  1590. playnum51:
  1591. 'playvoice' 'avm:voices/number51'
  1592. action = rc
  1593. select
  1594.   when action = 0 then nop
  1595.   when action = 1 then nop
  1596.   when action = 4 then signal stdfax
  1597.   when action = 5 then signal stddata
  1598.   when action = 8 then signal stdbusy
  1599.   when action = 12 then signal stdabort
  1600.   when action = 14 then signal stderror
  1601.   when action = 16 then signal stderror
  1602.   otherwise signal arexxerror
  1603. end
  1604. return
  1605.  
  1606. playnum52:
  1607. 'playvoice' 'avm:voices/number52'
  1608. action = rc
  1609. select
  1610.   when action = 0 then nop
  1611.   when action = 1 then nop
  1612.   when action = 4 then signal stdfax
  1613.   when action = 5 then signal stddata
  1614.   when action = 8 then signal stdbusy
  1615.   when action = 12 then signal stdabort
  1616.   when action = 14 then signal stderror
  1617.   when action = 16 then signal stderror
  1618.   otherwise signal arexxerror
  1619. end
  1620. return
  1621.  
  1622. playnum53:
  1623. 'playvoice' 'avm:voices/number53'
  1624. action = rc
  1625. select
  1626.   when action = 0 then nop
  1627.   when action = 1 then nop
  1628.   when action = 4 then signal stdfax
  1629.   when action = 5 then signal stddata
  1630.   when action = 8 then signal stdbusy
  1631.   when action = 12 then signal stdabort
  1632.   when action = 14 then signal stderror
  1633.   when action = 16 then signal stderror
  1634.   otherwise signal arexxerror
  1635. end
  1636. return
  1637.  
  1638. playnum54:
  1639. 'playvoice' 'avm:voices/number54'
  1640. action = rc
  1641. select
  1642.   when action = 0 then nop
  1643.   when action = 1 then nop
  1644.   when action = 4 then signal stdfax
  1645.   when action = 5 then signal stddata
  1646.   when action = 8 then signal stdbusy
  1647.   when action = 12 then signal stdabort
  1648.   when action = 14 then signal stderror
  1649.   when action = 16 then signal stderror
  1650.   otherwise signal arexxerror
  1651. end
  1652. return
  1653.  
  1654. playnum55:
  1655. 'playvoice' 'avm:voices/number55'
  1656. action = rc
  1657. select
  1658.   when action = 0 then nop
  1659.   when action = 1 then nop
  1660.   when action = 4 then signal stdfax
  1661.   when action = 5 then signal stddata
  1662.   when action = 8 then signal stdbusy
  1663.   when action = 12 then signal stdabort
  1664.   when action = 14 then signal stderror
  1665.   when action = 16 then signal stderror
  1666.   otherwise signal arexxerror
  1667. end
  1668. return
  1669.  
  1670. playnum56:
  1671. 'playvoice' 'avm:voices/number56'
  1672. action = rc
  1673. select
  1674.   when action = 0 then nop
  1675.   when action = 1 then nop
  1676.   when action = 4 then signal stdfax
  1677.   when action = 5 then signal stddata
  1678.   when action = 8 then signal stdbusy
  1679.   when action = 12 then signal stdabort
  1680.   when action = 14 then signal stderror
  1681.   when action = 16 then signal stderror
  1682.   otherwise signal arexxerror
  1683. end
  1684. return
  1685.  
  1686. playnum57:
  1687. 'playvoice' 'avm:voices/number57'
  1688. action = rc
  1689. select
  1690.   when action = 0 then nop
  1691.   when action = 1 then nop
  1692.   when action = 4 then signal stdfax
  1693.   when action = 5 then signal stddata
  1694.   when action = 8 then signal stdbusy
  1695.   when action = 12 then signal stdabort
  1696.   when action = 14 then signal stderror
  1697.   when action = 16 then signal stderror
  1698.   otherwise signal arexxerror
  1699. end
  1700. return
  1701.  
  1702. playnum58:
  1703. 'playvoice' 'avm:voices/number58'
  1704. action = rc
  1705. select
  1706.   when action = 0 then nop
  1707.   when action = 1 then nop
  1708.   when action = 4 then signal stdfax
  1709.   when action = 5 then signal stddata
  1710.   when action = 8 then signal stdbusy
  1711.   when action = 12 then signal stdabort
  1712.   when action = 14 then signal stderror
  1713.   when action = 16 then signal stderror
  1714.   otherwise signal arexxerror
  1715. end
  1716. return
  1717.  
  1718. playnum59:
  1719. 'playvoice' 'avm:voices/number59'
  1720. action = rc
  1721. select
  1722.   when action = 0 then nop
  1723.   when action = 1 then nop
  1724.   when action = 4 then signal stdfax
  1725.   when action = 5 then signal stddata
  1726.   when action = 8 then signal stdbusy
  1727.   when action = 12 then signal stdabort
  1728.   when action = 14 then signal stderror
  1729.   when action = 16 then signal stderror
  1730.   otherwise signal arexxerror
  1731. end
  1732. return
  1733.  
  1734.  
  1735. /* TITLE: avm:rexx/playtime.avm */
  1736. playtime:
  1737. procedure
  1738. parse arg secs
  1739. hours = secs % (60*60)
  1740. minutes = (secs - (hours * 60 * 60)) % 60
  1741. if hours < 12 then pm = 0
  1742. else do; pm = 1; hours = hours - 12; end
  1743. if hours = 0 then hours = 12
  1744. timeformat = getclip('AVMTimeFormat')
  1745. if timeformat = "" then timeformat = '%hours12 %minutes %pm'
  1746.  
  1747. do i = 1 to words(timeformat)
  1748.   if upper(word(timeformat, i)) = '%HOURS12' then
  1749.     call playddnumber(hours)
  1750.   else if upper(word(timeformat, i)) = '%HOURS24' then
  1751.     call playddnumber(hours + (pm * 12))
  1752.   else if upper(word(timeformat, i)) = '%MINUTES' then
  1753.     call playddnumber(minutes)
  1754.   else if upper(word(timeformat, i)) = '%PM' then
  1755.     do
  1756.  
  1757.       if pm then call playnumbranch('playtimepm')
  1758.       else call playnumbranch('playtimeam')
  1759.     end
  1760.   else
  1761.     call playddvoice(word(timeformat, i))
  1762. end
  1763.  
  1764. /* We're done */
  1765. return
  1766.  
  1767. playtimeam:
  1768. 'playvoice' 'avm:voices/timeam'
  1769. action = rc
  1770. select
  1771.   when action = 0 then nop
  1772.   when action = 1 then nop
  1773.   when action = 4 then signal stdfax
  1774.   when action = 5 then signal stddata
  1775.   when action = 8 then signal stdbusy
  1776.   when action = 12 then signal stdabort
  1777.   when action = 14 then signal stderror
  1778.   when action = 16 then signal stderror
  1779.   otherwise signal arexxerror
  1780. end
  1781. return
  1782.  
  1783. playtimepm:
  1784. 'playvoice' 'avm:voices/timepm'
  1785. action = rc
  1786. select
  1787.   when action = 0 then nop
  1788.   when action = 1 then nop
  1789.   when action = 4 then signal stdfax
  1790.   when action = 5 then signal stddata
  1791.   when action = 8 then signal stdbusy
  1792.   when action = 12 then signal stdabort
  1793.   when action = 14 then signal stderror
  1794.   when action = 16 then signal stderror
  1795.   otherwise signal arexxerror
  1796. end
  1797. return
  1798.  
  1799.  
  1800. /* TITLE: avm:rexx/playdate.avm */
  1801. playdate:
  1802. /* We're going to play the month and day */
  1803.  
  1804. procedure
  1805. parse arg actualDate
  1806.  
  1807. dateformat = getclip('AVMDateFormat')
  1808. if dateformat = "" then dateformat = "%month %day"
  1809. else if upper(dateformat) = "NONE" then dateformat = ""
  1810.  
  1811. do i = 1 to words(dateformat)
  1812.   if upper(word(dateformat, i)) = "%MONTH" then
  1813.     call playnumbranch('playdate' || substr(actualDate, 5, 2))
  1814.   else if upper(word(dateformat, i)) = "%DAY" then
  1815.     call playddnumber(substr(actualDate, 7, 2))
  1816.   else
  1817.     call playddvoice(word(dateformat, i))
  1818. end
  1819.  
  1820. /* We're done */
  1821. return
  1822.  
  1823. playddvoice:
  1824. procedure
  1825. parse arg filename
  1826.  
  1827. 'playvoice' filename
  1828. action = rc
  1829. select
  1830.   when action = 0 then nop
  1831.   when action = 1 then nop
  1832.   when action = 4 then signal stdfax
  1833.   when action = 5 then signal stddata
  1834.   when action = 8 then signal stdbusy
  1835.   when action = 12 then signal stdabort
  1836.   when action = 14 then signal stderror
  1837.   when action = 16 then signal stderror
  1838.   otherwise signal arexxerror
  1839. end
  1840. return
  1841.  
  1842. playdate01:
  1843. 'playvoice' 'avm:voices/monthjanuary'
  1844. action = rc
  1845. select
  1846.   when action = 0 then nop
  1847.   when action = 1 then nop
  1848.   when action = 4 then signal stdfax
  1849.   when action = 5 then signal stddata
  1850.   when action = 8 then signal stdbusy
  1851.   when action = 12 then signal stdabort
  1852.   when action = 14 then signal stderror
  1853.   when action = 16 then signal stderror
  1854.   otherwise signal arexxerror
  1855. end
  1856. return
  1857.  
  1858. playdate02:
  1859. 'playvoice' 'avm:voices/monthfebruary'
  1860. action = rc
  1861. select
  1862.   when action = 0 then nop
  1863.   when action = 1 then nop
  1864.   when action = 4 then signal stdfax
  1865.   when action = 5 then signal stddata
  1866.   when action = 8 then signal stdbusy
  1867.   when action = 12 then signal stdabort
  1868.   when action = 14 then signal stderror
  1869.   when action = 16 then signal stderror
  1870.   otherwise signal arexxerror
  1871. end
  1872. return
  1873.  
  1874. playdate03:
  1875. 'playvoice' 'avm:voices/monthmarch'
  1876. action = rc
  1877. select
  1878.   when action = 0 then nop
  1879.   when action = 1 then nop
  1880.   when action = 4 then signal stdfax
  1881.   when action = 5 then signal stddata
  1882.   when action = 8 then signal stdbusy
  1883.   when action = 12 then signal stdabort
  1884.   when action = 14 then signal stderror
  1885.   when action = 16 then signal stderror
  1886.   otherwise signal arexxerror
  1887. end
  1888. return
  1889.  
  1890. playdate04:
  1891. 'playvoice' 'avm:voices/monthapril'
  1892. action = rc
  1893. select
  1894.   when action = 0 then nop
  1895.   when action = 1 then nop
  1896.   when action = 4 then signal stdfax
  1897.   when action = 5 then signal stddata
  1898.   when action = 8 then signal stdbusy
  1899.   when action = 12 then signal stdabort
  1900.   when action = 14 then signal stderror
  1901.   when action = 16 then signal stderror
  1902.   otherwise signal arexxerror
  1903. end
  1904. return
  1905.  
  1906. playdate05:
  1907. 'playvoice' 'avm:voices/monthmay'
  1908. action = rc
  1909. select
  1910.   when action = 0 then nop
  1911.   when action = 1 then nop
  1912.   when action = 4 then signal stdfax
  1913.   when action = 5 then signal stddata
  1914.   when action = 8 then signal stdbusy
  1915.   when action = 12 then signal stdabort
  1916.   when action = 14 then signal stderror
  1917.   when action = 16 then signal stderror
  1918.   otherwise signal arexxerror
  1919. end
  1920. return
  1921.  
  1922. playdate06:
  1923. 'playvoice' 'avm:voices/monthjune'
  1924. action = rc
  1925. select
  1926.   when action = 0 then nop
  1927.   when action = 1 then nop
  1928.   when action = 4 then signal stdfax
  1929.   when action = 5 then signal stddata
  1930.   when action = 8 then signal stdbusy
  1931.   when action = 12 then signal stdabort
  1932.   when action = 14 then signal stderror
  1933.   when action = 16 then signal stderror
  1934.   otherwise signal arexxerror
  1935. end
  1936. return
  1937.  
  1938. playdate07:
  1939. 'playvoice' 'avm:voices/monthjuly'
  1940. action = rc
  1941. select
  1942.   when action = 0 then nop
  1943.   when action = 1 then nop
  1944.   when action = 4 then signal stdfax
  1945.   when action = 5 then signal stddata
  1946.   when action = 8 then signal stdbusy
  1947.   when action = 12 then signal stdabort
  1948.   when action = 14 then signal stderror
  1949.   when action = 16 then signal stderror
  1950.   otherwise signal arexxerror
  1951. end
  1952. return
  1953.  
  1954. playdate08:
  1955. 'playvoice' 'avm:voices/monthaugust'
  1956. action = rc
  1957. select
  1958.   when action = 0 then nop
  1959.   when action = 1 then nop
  1960.   when action = 4 then signal stdfax
  1961.   when action = 5 then signal stddata
  1962.   when action = 8 then signal stdbusy
  1963.   when action = 12 then signal stdabort
  1964.   when action = 14 then signal stderror
  1965.   when action = 16 then signal stderror
  1966.   otherwise signal arexxerror
  1967. end
  1968. return
  1969.  
  1970. playdate09:
  1971. 'playvoice' 'avm:voices/monthseptember'
  1972. action = rc
  1973. select
  1974.   when action = 0 then nop
  1975.   when action = 1 then nop
  1976.   when action = 4 then signal stdfax
  1977.   when action = 5 then signal stddata
  1978.   when action = 8 then signal stdbusy
  1979.   when action = 12 then signal stdabort
  1980.   when action = 14 then signal stderror
  1981.   when action = 16 then signal stderror
  1982.   otherwise signal arexxerror
  1983. end
  1984. return
  1985.  
  1986. playdate10:
  1987. 'playvoice' 'avm:voices/monthoctober'
  1988. action = rc
  1989. select
  1990.   when action = 0 then nop
  1991.   when action = 1 then nop
  1992.   when action = 4 then signal stdfax
  1993.   when action = 5 then signal stddata
  1994.   when action = 8 then signal stdbusy
  1995.   when action = 12 then signal stdabort
  1996.   when action = 14 then signal stderror
  1997.   when action = 16 then signal stderror
  1998.   otherwise signal arexxerror
  1999. end
  2000. return
  2001.  
  2002. playdate11:
  2003. 'playvoice' 'avm:voices/monthnovember'
  2004. action = rc
  2005. select
  2006.   when action = 0 then nop
  2007.   when action = 1 then nop
  2008.   when action = 4 then signal stdfax
  2009.   when action = 5 then signal stddata
  2010.   when action = 8 then signal stdbusy
  2011.   when action = 12 then signal stdabort
  2012.   when action = 14 then signal stderror
  2013.   when action = 16 then signal stderror
  2014.   otherwise signal arexxerror
  2015. end
  2016. return
  2017.  
  2018. playdate12:
  2019. 'playvoice' 'avm:voices/monthdecember'
  2020. action = rc
  2021. select
  2022.   when action = 0 then nop
  2023.   when action = 1 then nop
  2024.   when action = 4 then signal stdfax
  2025.   when action = 5 then signal stddata
  2026.   when action = 8 then signal stdbusy
  2027.   when action = 12 then signal stdabort
  2028.   when action = 14 then signal stderror
  2029.   when action = 16 then signal stderror
  2030.   otherwise signal arexxerror
  2031. end
  2032. return
  2033.  
  2034.  
  2035. /* TITLE: avm:rexx/recordmessage.avm */
  2036. recordmessage:
  2037. procedure
  2038. parse arg filename
  2039.  
  2040. recordmessagesagain:
  2041. call aapresentmenu('avm:voices/RecordMessage', '0123#*', '3')
  2042. action = result
  2043. select
  2044.   when action = '=0' then signal recordmessageagain
  2045.   when action = '=1' then signal recordmessagesplay
  2046.   when action = '=2' then signal recordmessagesrecord
  2047.   when action = '=3' then signal recordmessagesdelete
  2048.   when action = '=4' then nop
  2049.   when action = '=5' then nop
  2050.   when action = '=6' then nop
  2051.   when action = '=7' then nop
  2052.   when action = '=8' then nop
  2053.   when action = '=9' then nop
  2054.   when action = '=#' then do; nop; end
  2055.   when action = '=*' then signal answerVoiceDone
  2056.   when action = 4 then signal stdfax
  2057.   when action = 5 then signal stddata
  2058.   when action = 8 then signal stdbusy
  2059.   when action = 10 then signal answerVoiceDone
  2060.   when action = 12 then signal stdabort
  2061.   when action = 14 then signal stderror
  2062.   when action = 16 then signal stderror
  2063.   otherwise signal arexxerror
  2064. end
  2065. return
  2066.  
  2067. recordmessagesplay:
  2068. 'playbeep' '3000' '0' '4'
  2069. action = rc
  2070. select
  2071.   when action = 0 then nop
  2072.   when action = 1 then nop
  2073.   when action = 4 then signal stdfax
  2074.   when action = 5 then signal stddata
  2075.   when action = 8 then signal stdbusy
  2076.   when action = 12 then signal stdabort
  2077.   when action = 14 then signal stderror
  2078.   when action = 16 then signal stderror
  2079.   otherwise signal arexxerror
  2080. end
  2081.  
  2082. 'playvoice' filename
  2083. action = rc
  2084. select
  2085.   when action = 0 then nop
  2086.   when action = 1 then nop
  2087.   when action = 4 then signal stdfax
  2088.   when action = 5 then signal stddata
  2089.   when action = 8 then signal stdbusy
  2090.   when action = 12 then signal stdabort
  2091.   when action = 14 then nop
  2092.   when action = 16 then nop
  2093.   otherwise signal arexxerror
  2094. end
  2095.  
  2096. 'flushphonebuffer'
  2097.  
  2098. 'playbeep' '3000' '0' '4'
  2099. action = rc
  2100. select
  2101.   when action = 0 then nop
  2102.   when action = 1 then nop
  2103.   when action = 4 then signal stdfax
  2104.   when action = 5 then signal stddata
  2105.   when action = 8 then signal stdbusy
  2106.   when action = 12 then signal stdabort
  2107.   when action = 14 then signal stderror
  2108.   when action = 16 then signal stderror
  2109.   otherwise signal arexxerror
  2110. end
  2111. signal recordmessagesagain
  2112.  
  2113. recordmessagesrecord:
  2114. 'playvoice' 'avm:voices/RecordMessagesRecord'
  2115. action = rc
  2116. select
  2117.   when action = 0 then nop
  2118.   when action = 1 then nop
  2119.   when action = 4 then signal stdfax
  2120.   when action = 5 then signal stddata
  2121.   when action = 8 then signal stdbusy
  2122.   when action = 12 then signal stdabort
  2123.   when action = 14 then signal stderror
  2124.   when action = 16 then signal stderror
  2125.   otherwise signal arexxerror
  2126. end
  2127.  
  2128. 'playbeep' '3000' '0' '4'
  2129. action = rc
  2130. select
  2131.   when action = 0 then nop
  2132.   when action = 1 then nop
  2133.   when action = 4 then signal stdfax
  2134.   when action = 5 then signal stddata
  2135.   when action = 8 then signal stdbusy
  2136.   when action = 12 then signal stdabort
  2137.   when action = 14 then signal stderror
  2138.   when action = 16 then signal stderror
  2139.   otherwise signal arexxerror
  2140. end
  2141.  
  2142. 'recordvoice' '0' '-1' '30' filename
  2143. action = rc
  2144. select
  2145.   when action = 0 then nop
  2146.   when action = 1 then nop
  2147.   when action = 2 then nop
  2148.   when action = 3 then nop
  2149.   when action = 4 then signal stdfax
  2150.   when action = 5 then signal stddata
  2151.   when action = 8 then signal stdbusy
  2152.   when action = 10 then nop
  2153.   when action = 12 then signal stdabort
  2154.   when action = 14 then signal stderror
  2155.   when action = 16 then signal stderror
  2156.   otherwise signal arexxerror
  2157. end
  2158.  
  2159. 'flushphonebuffer'
  2160.  
  2161. 'playbeep' '3000' '0' '4'
  2162. action = rc
  2163. select
  2164.   when action = 0 then nop
  2165.   when action = 1 then nop
  2166.   when action = 4 then signal stdfax
  2167.   when action = 5 then signal stddata
  2168.   when action = 8 then signal stdbusy
  2169.   when action = 12 then signal stdabort
  2170.   when action = 14 then signal stderror
  2171.   when action = 16 then signal stderror
  2172.   otherwise signal arexxerror
  2173. end
  2174. signal recordmessagesagain
  2175.  
  2176. recordmessagesdelete:
  2177. address command 'delete >nil: <nil: quiet' filename
  2178. signal recordmessagesagain
  2179.  
  2180.  
  2181. aapresentmenu:
  2182. /* TITLE: avm:rexx/presentmenu.avm */
  2183. procedure expose pmRetries pmTimesAround
  2184. parse arg filename, valid, retries
  2185. timesaround = retries
  2186. pmTimesAround = timesaround
  2187. pmRetries = retries
  2188.  
  2189. rs.normal = 0
  2190. rs.keydetected = 1
  2191. rs.quietdetected = 2
  2192. rs.silencedetected = 3
  2193. rs.faxdetected = 4
  2194. rs.datadetected = 5
  2195. rs.busydetected = 8
  2196. rs.timedout = 10
  2197. rs.signaldetected = 12
  2198. rs.overflow = 14
  2199. rs.error = 16
  2200. /* CB 0000 */
  2201.  
  2202. aapresentmenuloop:
  2203. 'playvoice' filename
  2204. action = rc
  2205. select
  2206.   when action = 0 then nop
  2207.   when action = 1 then nop
  2208.   when action = 4 then do; return rs.faxdetected; end
  2209.   when action = 5 then do; return rs.datadetected; end
  2210.   when action = 8 then do; return rs.busydetected; end
  2211.   when action = 12 then do; return rs.signaldetected; end
  2212.   when action = 14 then do; return rs.error; end
  2213.   when action = 16 then do; return rs.error; end
  2214.   otherwise signal arexxerror
  2215. end
  2216.  
  2217. 'readnkeys' '1' '5'
  2218. action = rc
  2219. if action = 0 then value = result
  2220. select
  2221.   when action = 0 then signal aapresentmenuvalue
  2222.   when action = 4 then do; return rs.faxdetected; end
  2223.   when action = 5 then do; return rs.datadetected; end
  2224.   when action = 8 then do; return rs.busydetected; end
  2225.   when action = 10 then signal aapresentmenutimeout
  2226.   when action = 12 then do; return rs.signaldetected; end
  2227.   when action = 14 then do; return rs.error; end
  2228.   when action = 16 then do; return rs.error; end
  2229.   otherwise signal arexxerror
  2230. end
  2231. return rs.error
  2232.  
  2233. aapresentmenutimeout:
  2234. 'flushphonebuffer'
  2235.  
  2236. 'playvoice' 'avm:voices/TimedOut'
  2237. action = rc
  2238. select
  2239.   when action = 0 then nop
  2240.   when action = 1 then nop
  2241.   when action = 4 then do; return rs.faxdetected; end
  2242.   when action = 5 then do; return rs.datadetected; end
  2243.   when action = 8 then do; return rs.busydetected; end
  2244.   when action = 12 then do; return rs.signaldetected; end
  2245.   when action = 14 then do; return rs.error; end
  2246.   when action = 16 then do; return rs.error; end
  2247.   otherwise signal arexxerror
  2248. end
  2249.  
  2250. timesaround = timesaround - 1; pmTimesAround = timesaround
  2251. if timesaround <= 0 then return rs.timedout
  2252. signal aapresentmenuloop
  2253.  
  2254. aapresentmenuvalue:
  2255. if pos(value, valid) = 0 then signal aainvalid
  2256. return '=' || value
  2257.  
  2258. aainvalid:
  2259. 'flushphonebuffer'
  2260.  
  2261. 'playvoice' 'avm:voices/BadChoice'
  2262. action = rc
  2263. select
  2264.   when action = 0 then nop
  2265.   when action = 1 then nop
  2266.   when action = 4 then do; return rs.faxdetected; end
  2267.   when action = 5 then do; return rs.datadetected; end
  2268.   when action = 8 then do; return rs.busydetected; end
  2269.   when action = 12 then do; return rs.signaldetected; end
  2270.   when action = 14 then do; return rs.error; end
  2271.   when action = 16 then do; return rs.error; end
  2272.   otherwise signal arexxerror
  2273. end
  2274.  
  2275. timesaround = timesaround - 1; pmTimesAround = timesaround
  2276. if timesaround <= 0 then return rs.timedout
  2277. signal aapresentmenuloop
  2278.  
  2279.  
  2280. aaprocessmailbox:
  2281. /* TITLE: avm:rexx/processmailbox.avm */
  2282. /* Function which has one argument, the mailbox */
  2283.  
  2284. procedure expose acidname acidnumber mailbox faxscript datascript
  2285. parse arg mailbox .
  2286. call loadMailBox(mailbox)
  2287. calledSysop = 0
  2288. pagedSysop = 0
  2289.  
  2290. if mailbox.autoalertb = 1 & mailbox.autoalertscript ~= '' then
  2291.   address rexx 'alertsysop' mailbox
  2292.  
  2293. 'playvoice' voiceFile(mailbox,'Personal')
  2294. action = rc
  2295. select
  2296.   when action = 0 then nop
  2297.   when action = 1 then signal aakeypressed
  2298.   when action = 4 then signal stdfax
  2299.   when action = 5 then signal stddata
  2300.   when action = 8 then signal stdbusy
  2301.   when action = 12 then signal stdabort
  2302.   when action = 14 then nop
  2303.   when action = 16 then nop
  2304.   otherwise signal arexxerror
  2305. end
  2306.  
  2307. aaAnnounce:
  2308. if mailbox.autoforwardannounce = 1 & mailbox.autoforward ~= '' then call announceForwardNumber
  2309.  
  2310. aanopersonal:
  2311. 'playvoice' 'avm:voices/MailboxGreeting'
  2312. action = rc
  2313. select
  2314.   when action = 0 then nop
  2315.   when action = 1 then signal aakeypressed
  2316.   when action = 4 then signal stdfax
  2317.   when action = 5 then signal stddata
  2318.   when action = 8 then signal stdbusy
  2319.   when action = 12 then signal stdabort
  2320.   when action = 14 then signal stderror
  2321.   when action = 16 then signal stderror
  2322.   otherwise signal arexxerror
  2323. end
  2324.  
  2325. /* Init log file stuff */
  2326.  
  2327. aaskipinstructions:
  2328. handle = makeUniqueFile()
  2329. call initLogEntry()
  2330. call time('r')
  2331.  
  2332. userBeep = getclip('AVMUserBeep')
  2333. if userBeep = 'YES' then do
  2334.  
  2335. 'playvoice' 'avm:voices/UserBeep'
  2336. action = rc
  2337. select
  2338.   when action = 0 then nop
  2339.   when action = 1 then signal aakeypressed
  2340.   when action = 4 then signal stdfax
  2341.   when action = 5 then signal stddata
  2342.   when action = 8 then signal stdbusy
  2343.   when action = 12 then signal stdabort
  2344.   when action = 14 then signal stderror
  2345.   when action = 16 then signal stderror
  2346.   otherwise signal arexxerror
  2347. end
  2348.  
  2349. end; else do
  2350.  
  2351. 'playbeep' '3000' '0' '4'
  2352. action = rc
  2353. select
  2354.   when action = 0 then nop
  2355.   when action = 1 then nop
  2356.   when action = 4 then signal stdfax
  2357.   when action = 5 then signal stddata
  2358.   when action = 8 then signal stdbusy
  2359.   when action = 12 then signal stdabort
  2360.   when action = 14 then signal stderror
  2361.   when action = 16 then signal stderror
  2362.   otherwise signal arexxerror
  2363. end
  2364.  
  2365. end
  2366.  
  2367. 'recordvoice' '0' '-1' '-1' voiceFile(mailbox,handle)
  2368. action = rc
  2369. select
  2370.   when action = 0 then nop
  2371.   when action = 1 then do; call aafixlog; signal aakeypressedafterrecord; end
  2372.   when action = 2 then do; call aafixlog; signal stdabort; end
  2373.   when action = 3 then do; call aafixlog; if upper(getclip('AVMDataAfterSilence')) = 'YES' then signal stddata; else signal stdabort; end
  2374.   when action = 4 then do; call aafixlog; signal stdfax; end
  2375.   when action = 5 then do; call aafixlog; signal stddata; end
  2376.   when action = 8 then do; call aafixlog; signal stdbusy; end
  2377.   when action = 10 then do; call aafixlog; signal aakeypressedafterrecord; end
  2378.   when action = 12 then do; call aafixlog; signal stdabort; end
  2379.   when action = 14 then do; call aafixlog; signal stderror; end
  2380.   when action = 16 then do; call aafixlog; signal stderror; end
  2381.   otherwise signal arexxerror
  2382. end
  2383.  
  2384. /* Shouldn't get here */
  2385. signal stderror
  2386.  
  2387. aafixlog:
  2388. /* This writes out the log file */
  2389.  
  2390. if mailbox.autoforwardb = 1 & mailbox.autoforwardondemand = "" & calledSysop = 0 then do
  2391.   call aaCallSysop
  2392. end
  2393. if mailbox.autopageb = 1 & mailbox.autopageondemand = "" & pagedSysop = 0 then do
  2394.   call aaPageSysop
  2395. end
  2396.  
  2397. log.filename = handle
  2398. log.length = trunc(time('e'))
  2399. log.type = 'voice'
  2400. call saveLogEntry(mailbox, handle)
  2401. preConv = upper(getclip('AVMPreConvert'))
  2402. if preConv = 'YES' then
  2403.   address command 'run >nil: <nil: avm:adpcm2iff' ,
  2404.   voiceFile(mailbox, handle) voiceFile(mailbox, handle) || 'i' '-nogui -1second'
  2405. return
  2406.  
  2407. aakeypressedafterrecord:
  2408. 'flushphonebuffer'
  2409.  
  2410. processmailboxmenu:
  2411. call aapresentmenu('avm:voices/MailboxCaller', '012345679#*', '3')
  2412. action = result
  2413. select
  2414.   when action = '=0' then signal processmailboxmenu
  2415.   when action = '=1' then signal aaAnnounce
  2416.   when action = '=2' then signal stdfaxinstruct
  2417.   when action = '=3' then do; call aaleavenumber(); end
  2418.   when action = '=4' then do; good = getpassword(mailbox.autoalertondemand); if good then address rexx 'alertsysop' mailbox; end
  2419.   when action = '=5' then signal stddatainstruct
  2420.   when action = '=6' then do; good = getpassword(mailbox.autoforwardondemand); if good & calledSysop = 0 then call aaCallSysop(); end
  2421.   when action = '=7' then do; good = getpassword(mailbox.autopageondemand); if good & pagedSysop = 0 then call aaPageSysop(); end
  2422.   when action = '=8' then nop
  2423.   when action = '=9' then do; call aamaintenancemode(mailbox); end
  2424.   when action = '=#' then do; return; end
  2425.   when action = '=*' then signal answervoiceDone
  2426.   when action = 4 then signal stdfax
  2427.   when action = 5 then signal stddata
  2428.   when action = 8 then signal stdbusy
  2429.   when action = 10 then signal answervoiceDone
  2430.   when action = 12 then signal stdabort
  2431.   when action = 14 then signal stderror
  2432.   when action = 16 then signal stderror
  2433.   otherwise signal arexxerror
  2434. end
  2435. signal processmailboxmenu
  2436.  
  2437. /* Shouldn't get here */
  2438. signal stderror
  2439.  
  2440. aaleavenumber:
  2441. number = getNumber()
  2442.  
  2443. log.returnnumber = number
  2444. call updateLogEntry(mailbox, handle)
  2445. return
  2446.  
  2447. aakeypressed:
  2448. call aapresentmenu('avm:voices/SkipFaxMaintenance', '012359#*', '3')
  2449. action = result
  2450. select
  2451.   when action = '=0' then signal aakeypressed
  2452.   when action = '=1' then signal aaskipinstructions
  2453.   when action = '=2' then signal stdfaxinstruct
  2454.   when action = '=3' then signal aaAnnounce
  2455.   when action = '=4' then nop
  2456.   when action = '=5' then signal stddatainstruct
  2457.   when action = '=6' then nop
  2458.   when action = '=7' then nop
  2459.   when action = '=8' then nop
  2460.   when action = '=9' then do; call aamaintenancemode(mailbox); end
  2461.   when action = '=#' then do; return; end
  2462.   when action = '=*' then signal stdabort
  2463.   when action = 4 then signal stdfax
  2464.   when action = 5 then signal stddata
  2465.   when action = 8 then signal stdbusy
  2466.   when action = 10 then signal answervoiceDone
  2467.   when action = 12 then signal stdabort
  2468.   when action = 14 then signal stderror
  2469.   when action = 16 then signal stderror
  2470.   otherwise signal arexxerror
  2471. end
  2472. return
  2473.  
  2474. /* TITLE: avm:rexx/maintenancemode.avm */
  2475. aamaintenancemode:
  2476. procedure
  2477. parse arg mailbox .
  2478.  
  2479. call loadMailbox(mailbox)
  2480. good = getPassword(mailbox.password)
  2481. if good = 0 then signal answerVoiceDone
  2482.  
  2483. logsthis = words(showdir(logFile(mailbox, '')))
  2484. logsanonymous = words(showdir(logFile('anonymous', '')))
  2485. if upper(mailbox) = 'ANONYMOUS' then logsanonymous = 0
  2486.  
  2487. if logsthis > 0 then call sayCountEntries(logsthis, 0)
  2488. if logsanonymous > 0 then call sayCountEntries(logsanonymous, 1)
  2489.  
  2490. maintenanceModeAgain:
  2491. call aapresentmenu('avm:voices/maintenancemode', '01234567#*', '3')
  2492. action = result
  2493. select
  2494.   when action = '=0' then signal maintenanceModeAgain
  2495.   when action = '=1' then do; call retrievemessages(mailbox); end
  2496.   when action = '=2' then do; call recordMessage(voiceFile(mailbox, 'Personal')); end
  2497.   when action = '=3' then do; call changeintrooptions(); end
  2498.   when action = '=4' then do; call changepassword(); end
  2499.   when action = '=5' then do; call sendMessageTo('Outgoing', mailbox, '', makeUniqueFile(), 'Voice', voiceFile(mailbox, 'Introduction'), '', ''); end
  2500.   when action = '=6' then do; call changeautooptions(mailbox); end
  2501.   when action = '=7' then do; call aaretrievemessages('Outgoing', 1, mailbox); end
  2502.   when action = '=8' then nop
  2503.   when action = '=9' then nop
  2504.   when action = '=#' then do; return; end
  2505.   when action = '=*' then signal answervoiceDone
  2506.   when action = 4 then signal stdfax
  2507.   when action = 5 then signal stddata
  2508.   when action = 8 then signal stdbusy
  2509.   when action = 10 then signal answerVoiceDone
  2510.   when action = 12 then signal stdabort
  2511.   when action = 14 then signal stderror
  2512.   when action = 16 then signal stderror
  2513.   otherwise signal arexxerror
  2514. end
  2515. signal maintenanceModeAgain
  2516.  
  2517. /* TITLE: avm:rexx/getpassword.avm */
  2518. /* This is a procedure which accepts 1 argument, a password */
  2519.  
  2520. getpassword:
  2521. procedure
  2522. parse arg password
  2523. count = 3 /* max of 3 times */
  2524. if password = '' then return 1
  2525.  
  2526. getpasswordagain:
  2527. count = count - 1
  2528. if count = 0 then return 0 /* didn't get a good password */
  2529.  
  2530. 'playvoice' 'avm:voices/getpassword'
  2531. action = rc
  2532. select
  2533.   when action = 0 then nop
  2534.   when action = 1 then nop
  2535.   when action = 4 then signal stdfax
  2536.   when action = 5 then signal stddata
  2537.   when action = 8 then signal stdbusy
  2538.   when action = 12 then signal stdabort
  2539.   when action = 14 then signal stderror
  2540.   when action = 16 then signal stderror
  2541.   otherwise signal arexxerror
  2542. end
  2543.  
  2544. 'readkeysuntil' '#' '10' '7'
  2545. action = rc
  2546. if action = 0 then value = result
  2547. select
  2548.   when action = 0 then signal getpasskeydetected
  2549.   when action = 4 then signal stdfax
  2550.   when action = 5 then signal stddata
  2551.   when action = 8 then signal stdbusy
  2552.   when action = 10 then nop
  2553.   when action = 12 then signal stdabort
  2554.   when action = 14 then signal stderror
  2555.   when action = 16 then signal stderror
  2556.   otherwise signal arexxerror
  2557. end
  2558.  
  2559. 'playvoice' 'avm:voices/passwordtimeout'
  2560. action = rc
  2561. select
  2562.   when action = 0 then nop
  2563.   when action = 1 then nop
  2564.   when action = 4 then signal stdfax
  2565.   when action = 5 then signal stddata
  2566.   when action = 8 then signal stdbusy
  2567.   when action = 12 then signal stdabort
  2568.   when action = 14 then signal stderror
  2569.   when action = 16 then signal stderror
  2570.   otherwise signal arexxerror
  2571. end
  2572. signal getpasswordagain
  2573.  
  2574. getpasskeydetected:
  2575. if value = password then return 1
  2576.  
  2577. 'playvoice' 'avm:voices/passwordbad'
  2578. action = rc
  2579. select
  2580.   when action = 0 then nop
  2581.   when action = 1 then nop
  2582.   when action = 4 then signal stdfax
  2583.   when action = 5 then signal stddata
  2584.   when action = 8 then signal stdbusy
  2585.   when action = 12 then signal stdabort
  2586.   when action = 14 then signal stderror
  2587.   when action = 16 then signal stderror
  2588.   otherwise signal arexxerror
  2589. end
  2590. signal getpasswordagain
  2591.  
  2592.  
  2593. retrievemessages:
  2594. procedure
  2595. parse arg mailbox .
  2596. call aaretrievemessages(mailbox, 0, mailbox)
  2597.  
  2598. if upper(mailbox) = 'ANONYMOUS' then return
  2599.  
  2600. 'playvoice' 'avm:voices/retrieveanonymous'
  2601. action = rc
  2602. select
  2603.   when action = 0 then nop
  2604.   when action = 1 then nop
  2605.   when action = 4 then signal stdfax
  2606.   when action = 5 then signal stddata
  2607.   when action = 8 then signal stdbusy
  2608.   when action = 12 then signal stdabort
  2609.   when action = 14 then signal stderror
  2610.   when action = 16 then signal stderror
  2611.   otherwise signal arexxerror
  2612. end
  2613.  
  2614. call aaretrievemessages('Anonymous', 0, mailbox)
  2615.  
  2616. 'playvoice' 'avm:voices/backhome'
  2617. action = rc
  2618. select
  2619.   when action = 0 then nop
  2620.   when action = 1 then nop
  2621.   when action = 4 then signal stdfax
  2622.   when action = 5 then signal stddata
  2623.   when action = 8 then signal stdbusy
  2624.   when action = 12 then signal stdabort
  2625.   when action = 14 then signal stderror
  2626.   when action = 16 then signal stderror
  2627.   otherwise signal arexxerror
  2628. end
  2629. return
  2630.  
  2631. changepassword:
  2632. number = getNumber()
  2633. if number ~= '' then do
  2634.   mailbox.password = number
  2635.   call saveMailbox(mailbox)
  2636. end
  2637. return
  2638.  
  2639. sayCountEntries:
  2640. parse arg count, inAnon
  2641. if count = 1 & inAnon then signal say1Anon
  2642. else if count = 1 & inAnon = 0 then signal say1This
  2643.  
  2644. sayCountMultiple:
  2645. 'playvoice' 'avm:voices/ThereAre'
  2646. action = rc
  2647. select
  2648.   when action = 0 then nop
  2649.   when action = 1 then nop
  2650.   when action = 4 then signal stdfax
  2651.   when action = 5 then signal stddata
  2652.   when action = 8 then signal stdbusy
  2653.   when action = 12 then signal stdabort
  2654.   when action = 14 then signal stderror
  2655.   when action = 16 then signal stderror
  2656.   otherwise signal arexxerror
  2657. end
  2658.  
  2659. call playddnumber(count)
  2660. if inAnon then signal sayCountAnon
  2661. else signal sayCountThis
  2662.  
  2663. sayCountAnon:
  2664. 'playvoice' 'avm:voices/InAnonMailbox'
  2665. action = rc
  2666. select
  2667.   when action = 0 then nop
  2668.   when action = 1 then nop
  2669.   when action = 4 then signal stdfax
  2670.   when action = 5 then signal stddata
  2671.   when action = 8 then signal stdbusy
  2672.   when action = 12 then signal stdabort
  2673.   when action = 14 then signal stderror
  2674.   when action = 16 then signal stderror
  2675.   otherwise signal arexxerror
  2676. end
  2677. return
  2678.  
  2679. sayCountThis:
  2680. 'playvoice' 'avm:voices/InThisMailbox'
  2681. action = rc
  2682. select
  2683.   when action = 0 then nop
  2684.   when action = 1 then nop
  2685.   when action = 4 then signal stdfax
  2686.   when action = 5 then signal stddata
  2687.   when action = 8 then signal stdbusy
  2688.   when action = 12 then signal stdabort
  2689.   when action = 14 then signal stderror
  2690.   when action = 16 then signal stderror
  2691.   otherwise signal arexxerror
  2692. end
  2693. return
  2694.  
  2695. say1Anon:
  2696. 'playvoice' 'avm:voices/OneInAnonMailbox'
  2697. action = rc
  2698. select
  2699.   when action = 0 then nop
  2700.   when action = 1 then nop
  2701.   when action = 4 then signal stdfax
  2702.   when action = 5 then signal stddata
  2703.   when action = 8 then signal stdbusy
  2704.   when action = 12 then signal stdabort
  2705.   when action = 14 then signal stderror
  2706.   when action = 16 then signal stderror
  2707.   otherwise signal arexxerror
  2708. end
  2709. return
  2710.  
  2711. say1This:
  2712. 'playvoice' 'avm:voices/OneInThisMailbox'
  2713. action = rc
  2714. select
  2715.   when action = 0 then nop
  2716.   when action = 1 then nop
  2717.   when action = 4 then signal stdfax
  2718.   when action = 5 then signal stddata
  2719.   when action = 8 then signal stdbusy
  2720.   when action = 12 then signal stdabort
  2721.   when action = 14 then signal stderror
  2722.   when action = 16 then signal stderror
  2723.   otherwise signal arexxerror
  2724. end
  2725. return
  2726.  
  2727. changeintrooptions:
  2728. call aapresentmenu('avm:voices/changeintrooptions', '012345#*', '3')
  2729. action = result
  2730. select
  2731.   when action = '=0' then signal changeintrooptions
  2732.   when action = '=1' then do; call setclip('AVMIntroductionType', 'DAYOFWEEK'); end
  2733.   when action = '=2' then do; call setclip('AVMIntroductionType', 'TIMEOFDAY'); end
  2734.   when action = '=3' then do; call setclip('AVMIntroductionType', 'RANDOM'); end
  2735.   when action = '=4' then do; call changetomanual(); end
  2736.   when action = '=5' then do; call recordintro(); end
  2737.   when action = '=6' then nop
  2738.   when action = '=7' then nop
  2739.   when action = '=8' then nop
  2740.   when action = '=9' then nop
  2741.   when action = '=#' then do; return; end
  2742.   when action = '=*' then signal answervoiceDone
  2743.   when action = 4 then signal stdfax
  2744.   when action = 5 then signal stddata
  2745.   when action = 8 then signal stdbusy
  2746.   when action = 10 then signal answerVoiceDone
  2747.   when action = 12 then signal stdabort
  2748.   when action = 14 then signal stderror
  2749.   when action = 16 then signal stderror
  2750.   otherwise signal arexxerror
  2751. end
  2752. signal changeintrooptions
  2753.  
  2754. changetomanual:
  2755. call aapresentmenu('avm:voices/selectmanualintro', '01234567#*', '3')
  2756. action = result
  2757. select
  2758.   when action = '=0' then signal changetomanual
  2759.   when action = '=1' then do; call setclip('AVMIntroductionType', '1'); end
  2760.   when action = '=2' then do; call setclip('AVMIntroductionType', '2'); end
  2761.   when action = '=3' then do; call setclip('AVMIntroductionType', '3'); end
  2762.   when action = '=4' then do; call setclip('AVMIntroductionType', '4'); end
  2763.   when action = '=5' then do; call setclip('AVMIntroductionType', '5'); end
  2764.   when action = '=6' then do; call setclip('AVMIntroductionType', '6'); end
  2765.   when action = '=7' then do; call setclip('AVMIntroductionType', '7'); end
  2766.   when action = '=8' then nop
  2767.   when action = '=9' then nop
  2768.   when action = '=#' then do; return; end
  2769.   when action = '=*' then signal answervoiceDone
  2770.   when action = 4 then signal stdfax
  2771.   when action = 5 then signal stddata
  2772.   when action = 8 then signal stdbusy
  2773.   when action = 10 then signal answerVoiceDone
  2774.   when action = 12 then signal stdabort
  2775.   when action = 14 then signal stderror
  2776.   when action = 16 then signal stderror
  2777.   otherwise signal arexxerror
  2778. end
  2779. signal changetomanual
  2780.  
  2781. recordintro:
  2782. call aapresentmenu('avm:voices/recordintro', '01234567#*', '3')
  2783. action = result
  2784. select
  2785.   when action = '=0' then signal recordintro
  2786.   when action = '=1' then do; call recordmessage('avm:voices/intro1'); end
  2787.   when action = '=2' then do; call recordmessage('avm:voices/intro2'); end
  2788.   when action = '=3' then do; call recordmessage('avm:voices/intro3'); end
  2789.   when action = '=4' then do; call recordmessage('avm:voices/intro4'); end
  2790.   when action = '=5' then do; call recordmessage('avm:voices/intro5'); end
  2791.   when action = '=6' then do; call recordmessage('avm:voices/intro6'); end
  2792.   when action = '=7' then do; call recordmessage('avm:voices/intro7'); end
  2793.   when action = '=8' then nop
  2794.   when action = '=9' then nop
  2795.   when action = '=#' then do; return; end
  2796.   when action = '=*' then signal answervoiceDone
  2797.   when action = 4 then signal stdfax
  2798.   when action = 5 then signal stddata
  2799.   when action = 8 then signal stdbusy
  2800.   when action = 10 then signal answerVoiceDone
  2801.   when action = 12 then signal stdabort
  2802.   when action = 14 then signal stderror
  2803.   when action = 16 then signal stderror
  2804.   otherwise signal arexxerror
  2805. end
  2806. signal recordintro
  2807.  
  2808. changeautooptions:
  2809. procedure
  2810. parse arg mailbox .
  2811. call loadMailbox(mailbox)
  2812.  
  2813. changeautomenu:
  2814. call aapresentmenu('avm:voices/ChangeAutoOptions', '0123#*', '3')
  2815. action = result
  2816. select
  2817.   when action = '=0' then signal changeautomenu
  2818.   when action = '=1' then do; call editautooptions('AUTOFORWARDB', 'AUTOFORWARDONDEMAND', 'AUTOFORWARD', 'AUTOFORWARDANNOUNCE'); end
  2819.   when action = '=2' then do; call editautooptions('AUTOFAXFORWARDB', '', 'AUTOFAXFORWARD', ''); end
  2820.   when action = '=3' then do; call editautooptions('AUTOPAGEB', 'AUTOPAGEONDEMAND', 'AUTOPAGE', ''); end
  2821.   when action = '=4' then nop
  2822.   when action = '=5' then nop
  2823.   when action = '=6' then nop
  2824.   when action = '=7' then nop
  2825.   when action = '=8' then nop
  2826.   when action = '=9' then nop
  2827.   when action = '=#' then do; return; end
  2828.   when action = '=*' then signal answerVoiceDone
  2829.   when action = 4 then signal stdfax
  2830.   when action = 5 then signal stddata
  2831.   when action = 8 then signal stdbusy
  2832.   when action = 10 then signal answerVoiceDone
  2833.   when action = 12 then signal stdabort
  2834.   when action = 14 then signal stderror
  2835.   when action = 16 then signal stderror
  2836.   otherwise signal arexxerror
  2837. end
  2838. signal changeautomenu
  2839.  
  2840. editautooptions:
  2841. procedure expose mailbox. mailbox
  2842. parse arg isOn, onDemand, telNumber, announce
  2843. call showAutoOptions
  2844.  
  2845. editautomenu:
  2846. call aapresentmenu('avm:voices/AutoOptions', '01234567#*', '3')
  2847. action = result
  2848. select
  2849.   when action = '=0' then signal editautomenu
  2850.   when action = '=1' then do; mailbox.isOn = 1; call saveMailbox(mailbox); end
  2851.   when action = '=2' then do; mailbox.isOn = 0; call saveMailbox(mailbox); end
  2852.   when action = '=3' then do; mailbox.telNumber = getNumber(); call saveMailbox(mailbox); end
  2853.   when action = '=4' then do; if onDemand ~= '' then do; mailbox.onDemand = getNumber(); call saveMailbox(mailbox); end; end
  2854.   when action = '=5' then do; if announce ~= '' then do; mailbox.announce = 1; call saveMailbox(mailbox); end; end
  2855.   when action = '=6' then do; if announce ~= '' then do; mailbox.announce = 0; call saveMailbox(mailbox); end; end
  2856.   when action = '=7' then do; call showAutoOptions(); end
  2857.   when action = '=8' then nop
  2858.   when action = '=9' then nop
  2859.   when action = '=#' then do; return; end
  2860.   when action = '=*' then signal answerVoiceDone
  2861.   when action = 4 then signal stdfax
  2862.   when action = 5 then signal stddata
  2863.   when action = 8 then signal stdbusy
  2864.   when action = 10 then signal answerVoiceDone
  2865.   when action = 12 then signal stdabort
  2866.   when action = 14 then signal stderror
  2867.   when action = 16 then signal stderror
  2868.   otherwise signal arexxerror
  2869. end
  2870. signal editautomenu
  2871.  
  2872. showautooptions:
  2873. if mailbox.isOn = 1 then call autoIsOn(); else call autoIsOff()
  2874. if onDemand ~= '' then call autoOnDemand(mailbox.onDemand)
  2875. call autoTelNumber(mailbox.telNumber)
  2876. if announce ~= '' then
  2877.   if mailbox.announce = 1 then call announceIsOn(); else call announceIsOff()
  2878. return
  2879.  
  2880. autoIsOn:
  2881. 'playvoice' 'avm:voices/AutoIsOn'
  2882. action = rc
  2883. select
  2884.   when action = 0 then nop
  2885.   when action = 1 then nop
  2886.   when action = 4 then signal stdfax
  2887.   when action = 5 then signal stddata
  2888.   when action = 8 then signal stdbusy
  2889.   when action = 12 then signal stdabort
  2890.   when action = 14 then signal stderror
  2891.   when action = 16 then signal stderror
  2892.   otherwise signal arexxerror
  2893. end
  2894.  
  2895. 'flushphonebuffer'
  2896. return
  2897.  
  2898. autoIsOff:
  2899. 'playvoice' 'avm:voices/autoIsOff'
  2900. action = rc
  2901. select
  2902.   when action = 0 then nop
  2903.   when action = 1 then nop
  2904.   when action = 4 then signal stdfax
  2905.   when action = 5 then signal stddata
  2906.   when action = 8 then signal stdbusy
  2907.   when action = 12 then signal stdabort
  2908.   when action = 14 then signal stderror
  2909.   when action = 16 then signal stderror
  2910.   otherwise signal arexxerror
  2911. end
  2912.  
  2913. 'flushphonebuffer'
  2914. return
  2915.  
  2916. announceIsOn:
  2917. 'playvoice' 'avm:voices/AnnounceIsOn'
  2918. action = rc
  2919. select
  2920.   when action = 0 then nop
  2921.   when action = 1 then nop
  2922.   when action = 4 then signal stdfax
  2923.   when action = 5 then signal stddata
  2924.   when action = 8 then signal stdbusy
  2925.   when action = 12 then signal stdabort
  2926.   when action = 14 then signal stderror
  2927.   when action = 16 then signal stderror
  2928.   otherwise signal arexxerror
  2929. end
  2930.  
  2931. 'flushphonebuffer'
  2932. return
  2933.  
  2934. announceIsOff:
  2935. 'playvoice' 'avm:voices/AnnounceIsOff'
  2936. action = rc
  2937. select
  2938.   when action = 0 then nop
  2939.   when action = 1 then nop
  2940.   when action = 4 then signal stdfax
  2941.   when action = 5 then signal stddata
  2942.   when action = 8 then signal stdbusy
  2943.   when action = 12 then signal stdabort
  2944.   when action = 14 then signal stderror
  2945.   when action = 16 then signal stderror
  2946.   otherwise signal arexxerror
  2947. end
  2948.  
  2949. 'flushphonebuffer'
  2950. return
  2951.  
  2952. autoOnDemand:
  2953. procedure
  2954. parse arg number
  2955.  
  2956. 'playvoice' 'avm:voices/AutoOnDemand'
  2957. action = rc
  2958. select
  2959.   when action = 0 then nop
  2960.   when action = 1 then nop
  2961.   when action = 4 then signal stdfax
  2962.   when action = 5 then signal stddata
  2963.   when action = 8 then signal stdbusy
  2964.   when action = 12 then signal stdabort
  2965.   when action = 14 then signal stderror
  2966.   when action = 16 then signal stderror
  2967.   otherwise signal arexxerror
  2968. end
  2969.  
  2970. call playNumber(number)
  2971.  
  2972. 'flushphonebuffer'
  2973. return
  2974.  
  2975. autoTelNumber:
  2976. procedure
  2977. parse arg number
  2978.  
  2979. 'playvoice' 'avm:voices/AutoTelNumber'
  2980. action = rc
  2981. select
  2982.   when action = 0 then nop
  2983.   when action = 1 then nop
  2984.   when action = 4 then signal stdfax
  2985.   when action = 5 then signal stddata
  2986.   when action = 8 then signal stdbusy
  2987.   when action = 12 then signal stdabort
  2988.   when action = 14 then signal stderror
  2989.   when action = 16 then signal stderror
  2990.   otherwise signal arexxerror
  2991. end
  2992.  
  2993. call playNumber(number)
  2994.  
  2995. 'flushphonebuffer'
  2996. return
  2997.  
  2998. /* TITLE: avm:rexx/retrievemessages.avm */
  2999. aaretrievemessages:
  3000. procedure
  3001. parse arg mailbox, isOutgoing, whichMailbox
  3002.  
  3003. logs = showdir(logFile(mailbox, ''))
  3004. numlogs = words(logs)
  3005. currentlog = 1
  3006.  
  3007. retrievemessagesnext:
  3008. if currentlog > numlogs then signal retrievemessagesdone
  3009. currentHandle = word(logs, currentLog)
  3010. call loadLogEntry(mailbox, currentHandle)
  3011. if (isOutgoing & ( log.returnRetry = '' | log.returnRetry = 0 | (upper(log.origMailbox) ~= upper(whichMailbox) & upper(log.origMailbox) ~= 'ANONYMOUS'))) then do
  3012.   currentLog = currentLog + 1
  3013.   signal retrieveMessagesNext
  3014. end
  3015.  
  3016. retrievemessagesagain:
  3017. logtype = upper(log.type)
  3018. if logtype = 'FAX' then signal isfax
  3019. else if logtype = 'VOICE' then signal isvoice
  3020. else signal isunknown
  3021.  
  3022. isfax:
  3023. 'playvoice' 'avm:voices/FaxMessage'
  3024. action = rc
  3025. select
  3026.   when action = 0 then nop
  3027.   when action = 1 then nop
  3028.   when action = 4 then signal stdfax
  3029.   when action = 5 then signal stddata
  3030.   when action = 8 then signal stdbusy
  3031.   when action = 12 then signal stdabort
  3032.   when action = 14 then signal stderror
  3033.   when action = 16 then signal stderror
  3034.   otherwise signal arexxerror
  3035. end
  3036. signal aftertype
  3037.  
  3038. isvoice:
  3039. 'playbeep' '3000' '0' '4'
  3040. action = rc
  3041. select
  3042.   when action = 0 then nop
  3043.   when action = 1 then nop
  3044.   when action = 4 then nop
  3045.   when action = 5 then nop
  3046.   when action = 8 then nop
  3047.   when action = 12 then signal stdabort
  3048.   when action = 14 then signal stderror
  3049.   when action = 16 then signal stderror
  3050.   otherwise signal arexxerror
  3051. end
  3052.  
  3053. 'playvoice' voiceFile(mailbox, log.filename)
  3054. action = rc
  3055. select
  3056.   when action = 0 then nop
  3057.   when action = 1 then nop
  3058.   when action = 4 then nop
  3059.   when action = 5 then nop
  3060.   when action = 8 then nop
  3061.   when action = 12 then signal stdabort
  3062.   when action = 14 then nop
  3063.   when action = 16 then nop
  3064.   otherwise signal arexxerror
  3065. end
  3066.  
  3067. 'flushphonebuffer'
  3068.  
  3069. 'playbeep' '3000' '0' '4'
  3070. action = rc
  3071. select
  3072.   when action = 0 then nop
  3073.   when action = 1 then nop
  3074.   when action = 4 then nop
  3075.   when action = 5 then nop
  3076.   when action = 8 then nop
  3077.   when action = 12 then signal stdabort
  3078.   when action = 14 then signal stderror
  3079.   when action = 16 then signal stderror
  3080.   otherwise signal arexxerror
  3081. end
  3082. signal aftertype
  3083.  
  3084. isunknown:
  3085. 'playvoice' 'avm:voices/UnknownMessage'
  3086. action = rc
  3087. select
  3088.   when action = 0 then nop
  3089.   when action = 1 then nop
  3090.   when action = 4 then signal stdfax
  3091.   when action = 5 then signal stddata
  3092.   when action = 8 then signal stdbusy
  3093.   when action = 12 then signal stdabort
  3094.   when action = 14 then signal stderror
  3095.   when action = 16 then signal stderror
  3096.   otherwise signal arexxerror
  3097. end
  3098. signal aftertype
  3099.  
  3100. aftertype:
  3101. call aapresentmenu('avm:voices/RetrieveMessages', '012345678#*', '3')
  3102. action = result
  3103. select
  3104.   when action = '=0' then signal aftertype
  3105.   when action = '=1' then signal retrievemessagesagain
  3106.   when action = '=2' then do; call playtimedate(); end
  3107.   when action = '=3' then do; call playtelcidnumber(); end
  3108.   when action = '=4' then signal processNextMessage
  3109.   when action = '=5' then do; address rexx 'delete' mailbox currentHandle; signal processNextMessage; end
  3110.   when action = '=6' then do; if isOutgoing = 0 then address rexx 'archive' mailbox currentHandle; else address rexx 'archiveoutgoing' mailbox currentHandle; signal processNextMessage; end
  3111.   when action = '=7' then do; call forwardmessage(mailbox, currentHandle); end
  3112.   when action = '=8' then do; call replymessage(mailbox, currentHandle); end
  3113.   when action = '=9' then nop
  3114.   when action = '=#' then do; return; end
  3115.   when action = '=*' then signal answervoiceDone
  3116.   when action = 4 then signal stdfax
  3117.   when action = 5 then signal stddata
  3118.   when action = 8 then signal stdbusy
  3119.   when action = 10 then signal answerVoiceDone
  3120.   when action = 12 then signal stdabort
  3121.   when action = 14 then signal stderror
  3122.   when action = 16 then signal stderror
  3123.   otherwise signal arexxerror
  3124. end
  3125. signal aftertype
  3126.  
  3127. processNextMessage:
  3128. currentLog = currentLog + 1
  3129. signal retrievemessagesnext
  3130.  
  3131. playtimedate:
  3132. actualTime = convertToTime(log.time)
  3133. actualDate = convertToDate(log.time)
  3134. call playTime(actualTime)
  3135. actualDate = date('s', actualDate) /* convert to sorted */
  3136. call playDate(actualDate)
  3137.  
  3138. 'flushphonebuffer'
  3139.  
  3140. return
  3141.  
  3142. playtelcidnumber:
  3143. 'playvoice' 'avm:voices/cidnumber'
  3144. action = rc
  3145. select
  3146.   when action = 0 then nop
  3147.   when action = 1 then nop
  3148.   when action = 4 then signal stdfax
  3149.   when action = 5 then signal stddata
  3150.   when action = 8 then signal stdbusy
  3151.   when action = 12 then signal stdabort
  3152.   when action = 14 then signal stderror
  3153.   when action = 16 then signal stderror
  3154.   otherwise signal arexxerror
  3155. end
  3156.  
  3157. if symbol('log.cidnumber') = 'VAR' then
  3158.   call playNumber(log.cidnumber)
  3159.  
  3160. 'flushphonebuffer'
  3161.  
  3162. 'playvoice' 'avm:voices/returnnumber'
  3163. action = rc
  3164. select
  3165.   when action = 0 then nop
  3166.   when action = 1 then nop
  3167.   when action = 4 then signal stdfax
  3168.   when action = 5 then signal stddata
  3169.   when action = 8 then signal stdbusy
  3170.   when action = 12 then signal stdabort
  3171.   when action = 14 then signal stderror
  3172.   when action = 16 then signal stderror
  3173.   otherwise signal arexxerror
  3174. end
  3175.  
  3176. if symbol('log.returnnumber') = 'VAR' then
  3177.   call playNumber(log.returnnumber)
  3178.  
  3179. 'flushphonebuffer'
  3180. return
  3181.  
  3182. retrievemessagesdone:
  3183. 'playvoice' 'avm:voices/NoMoreMessages'
  3184. action = rc
  3185. select
  3186.   when action = 0 then nop
  3187.   when action = 1 then nop
  3188.   when action = 4 then signal stdfax
  3189.   when action = 5 then signal stddata
  3190.   when action = 8 then signal stdbusy
  3191.   when action = 12 then signal stdabort
  3192.   when action = 14 then signal stderror
  3193.   when action = 16 then signal stderror
  3194.   otherwise signal arexxerror
  3195. end
  3196. return
  3197.  
  3198. replyMessage:
  3199. procedure
  3200. parse arg mailbox, magicCookie
  3201. call loadLogEntry(mailbox, magicCookie)
  3202. number = log.returnNumber
  3203. if number = '' then number = log.cidNumber
  3204. handle = makeUniqueFile()
  3205. sent = sendMessageTo('Outgoing', mailbox, number, handle, 'Voice', voiceFile(mailbox, 'Introduction'), log.cidNumber, log.cidName)
  3206.  
  3207. return
  3208.  
  3209. forwardMessage:
  3210. procedure
  3211. parse arg mailbox, magicCookie
  3212. call loadLogEntry(mailbox, magicCookie)
  3213.  
  3214. if verify(log.fileName, '/:', 'M') = 0 then
  3215.   address command 'copy >nil: <nil:' voiceFile(mailbox, log.fileName) || '#?' voiceFile('Outgoing', '')
  3216. sent = sendMessageTo('Outgoing', mailbox, '', log.fileName, log.type, voiceFile(mailbox, 'Introduction'), log.cidName, log.cidNumber)
  3217. return
  3218.  
  3219. /* TITLE: avm:rexx/sendmessageto.avm */
  3220. sendMessageTo:
  3221. procedure
  3222. parse arg mailbox, originMailbox, number, actualFilename, fileType, introFileName, acidName, acidNumber
  3223. handle = makeUniqueFile()
  3224. call initLogEntry()
  3225. log.returnNumber = number
  3226. log.filename = actualFilename
  3227. log.type = fileType; log.returnSendFunc = 'DefaultSender'
  3228. log.returnRetry = 3; log.returnInterval = 5
  3229. log.origMailbox = originMailbox
  3230. log.altFileName = introFileName; log.cidName = acidName; log.cidNumber = acidNumber
  3231.  
  3232. if upper(log.type) = 'VOICE' & ~exists(voiceFile(mailbox, log.fileName)) then call smNeedToRecordOut
  3233. if ~exists(voiceFile(mailbox, log.altFileName)) then call smNeedToRecordIntro
  3234. if log.returnNumber = '' then do; call smNeedToEnterTel(); signal sendMessageToMenu; end
  3235.  
  3236. 'playvoice' 'avm:voices/numberToSendTo'
  3237. action = rc
  3238. select
  3239.   when action = 0 then nop
  3240.   when action = 1 then nop
  3241.   when action = 4 then do; call cleanSendMessageTo(); signal stdfax; end
  3242.   when action = 5 then do; call cleanSendMessageTo(); signal stddata; end
  3243.   when action = 8 then do; call cleanSendMessageTo(); signal stdbusy; end
  3244.   when action = 12 then do; call cleanSendMessageTo(); signal stdabort; end
  3245.   when action = 14 then do; call cleanSendMessageTo(); signal stderror; end
  3246.   when action = 16 then do; call cleanSendMessageTo(); signal stderror; end
  3247.   otherwise signal arexxerror
  3248. end
  3249.  
  3250. call playNumber(log.returnNumber)
  3251.  
  3252. 'flushphonebuffer'
  3253.  
  3254. sendMessageToMenu:
  3255. call aapresentmenu('avm:voices/editSendMessage', '01234#*', '3')
  3256. action = result
  3257. select
  3258.   when action = '=0' then signal sendMessageToMenu
  3259.   when action = '=1' then do; call playNumber(log.returnNumber); log.returnNumber = getNumber(); signal sendMessageToMenu; end
  3260.   when action = '=2' then do; if upper(log.type) = 'VOICE' then call recordMessage(voiceFile(mailbox, log.filename)); signal sendMessageToMenu; end
  3261.   when action = '=3' then do; call editIntro(); signal sendMessageToMenu; end
  3262.   when action = '=4' then do; if smCanSend() then do; call saveLogEntry(mailbox, handle); return 1; end; else signal sendMessageToMenu; end
  3263.   when action = '=5' then nop
  3264.   when action = '=6' then nop
  3265.   when action = '=7' then nop
  3266.   when action = '=8' then nop
  3267.   when action = '=9' then nop
  3268.   when action = '=#' then do; call cleanSendMessageTo(); return 0; end
  3269.   when action = '=*' then do; call cleanSendMessageTo(); signal answerVoiceDone; end
  3270.   when action = 4 then do; call cleanSendMessageTo(); signal stdfax; end
  3271.   when action = 5 then do; call cleanSendMessageTo(); signal stddata; end
  3272.   when action = 8 then do; call cleanSendMessageTo(); signal stdbusy; end
  3273.   when action = 10 then do; call cleanSendMessageTo(); signal answerVoiceDone; end
  3274.   when action = 12 then do; call cleanSendMessageTo(); signal stdabort; end
  3275.   when action = 14 then do; call cleanSendMessageTo(); signal stderror; end
  3276.   when action = 16 then do; call cleanSendMessageTo(); signal stderror; end
  3277.   otherwise signal arexxerror
  3278. end
  3279. call cleanSendMessageTo(); return 0
  3280.  
  3281. cleanSendMessageTo:
  3282. if verify(log.fileName, '/:', 'M') = 0 then
  3283.   address command 'delete >nil: <nil: quiet' voiceFile('Outgoing', log.fileName) || '#?'
  3284. if verify(log.altFileName, '/:', 'M') = 0 then
  3285.   address command 'delete >nil: <nil: quiet' voiceFile('Outgoing', log.altFileName) || '#?'
  3286. return
  3287.  
  3288. smNeedToRecordOut:
  3289. 'playvoice' 'avm:voices/NeedToRecordOutgoing'
  3290. action = rc
  3291. select
  3292.   when action = 0 then nop
  3293.   when action = 1 then nop
  3294.   when action = 4 then do; call cleanSendMessageTo(); signal stdfax; end
  3295.   when action = 5 then do; call cleanSendMessageTo(); signal stddata; end
  3296.   when action = 8 then do; call cleanSendMessageTo(); signal stdbusy; end
  3297.   when action = 12 then do; call cleanSendMessageTo(); signal stdabort; end
  3298.   when action = 14 then do; call cleanSendMessageTo(); signal stderror; end
  3299.   when action = 16 then do; call cleanSendMessageTo(); signal stderror; end
  3300.   otherwise signal arexxerror
  3301. end
  3302.  
  3303. 'flushphonebuffer'
  3304. return
  3305.  
  3306. smNeedToRecordIntro:
  3307. 'playvoice' 'avm:voices/NeedToRecordIntro'
  3308. action = rc
  3309. select
  3310.   when action = 0 then nop
  3311.   when action = 1 then nop
  3312.   when action = 4 then do; call cleanSendMessageTo(); signal stdfax; end
  3313.   when action = 5 then do; call cleanSendMessageTo(); signal stddata; end
  3314.   when action = 8 then do; call cleanSendMessageTo(); signal stdbusy; end
  3315.   when action = 12 then do; call cleanSendMessageTo(); signal stdabort; end
  3316.   when action = 14 then do; call cleanSendMessageTo(); signal stderror; end
  3317.   when action = 16 then do; call cleanSendMessageTo(); signal stderror; end
  3318.   otherwise signal arexxerror
  3319. end
  3320.  
  3321. 'flushphonebuffer'
  3322. return
  3323.  
  3324. smNeedToEnterTel:
  3325. 'playvoice' 'avm:voices/NeedToEnterTel'
  3326. action = rc
  3327. select
  3328.   when action = 0 then nop
  3329.   when action = 1 then nop
  3330.   when action = 4 then do; call cleanSendMessageTo(); signal stdfax; end
  3331.   when action = 5 then do; call cleanSendMessageTo(); signal stddata; end
  3332.   when action = 8 then do; call cleanSendMessageTo(); signal stdbusy; end
  3333.   when action = 12 then do; call cleanSendMessageTo(); signal stdabort; end
  3334.   when action = 14 then do; call cleanSendMessageTo(); signal stderror; end
  3335.   when action = 16 then do; call cleanSendMessageTo(); signal stderror; end
  3336.   otherwise signal arexxerror
  3337. end
  3338.  
  3339. 'flushphonebuffer'
  3340. return
  3341.  
  3342. editIntro:
  3343. call aapresentmenu('avm:voices/EditIntro', '0123#*', '3')
  3344. action = result
  3345. select
  3346.   when action = '=0' then signal editIntro
  3347.   when action = '=1' then do; log.altFileName = voiceFile(log.origMailbox, 'Introduction'); end
  3348.   when action = '=2' then do; log.altFileName = makeUniqueFile(); end
  3349.   when action = '=3' then do; call recordMessage(voiceFile(mailbox, log.altFileName)); end
  3350.   when action = '=4' then nop
  3351.   when action = '=5' then nop
  3352.   when action = '=6' then nop
  3353.   when action = '=7' then nop
  3354.   when action = '=8' then nop
  3355.   when action = '=9' then nop
  3356.   when action = '=#' then do; return; end
  3357.   when action = '=*' then do; call cleanSendMessageTo(); signal answerVoiceDone; end
  3358.   when action = 4 then do; call cleanSendMessageTo(); signal stdfax; end
  3359.   when action = 5 then do; call cleanSendMessageTo(); signal stddata; end
  3360.   when action = 8 then do; call cleanSendMessageTo(); signal stdbusy; end
  3361.   when action = 10 then do; call cleanSendMessageTo(); signal answerVoiceDone; end
  3362.   when action = 12 then do; call cleanSendMessageTo(); signal stdabort; end
  3363.   when action = 14 then do; call cleanSendMessageTo(); signal stderror; end
  3364.   when action = 16 then do; call cleanSendMessageTo(); signal stderror; end
  3365.   otherwise signal arexxerror
  3366. end
  3367. signal editIntro
  3368.  
  3369. smCanSend:
  3370. if log.returnNumber = '' then do; call smNeedToEnterTel(); return 0; end
  3371. if upper(log.type) = 'VOICE' & ~exists(voiceFile(mailbox, log.fileName)) then do; call smNeedToRecordOut(); return 0; end
  3372. return 1
  3373.  
  3374.  
  3375.  
  3376. return
  3377.  
  3378. aaCallSysop:
  3379. procedure expose mailbox. mailbox calledSysop
  3380. if mailbox.autoforwardscript ~= "" & mailbox.autoforward ~= "" then do
  3381.      calledSysop = 1
  3382.      handle = makeUniqueFile()
  3383.      call initLogEntry(); log.origmailbox = mailbox
  3384.      log.filename = 'avm:voices/autoforward'; log.type = 'voice'
  3385.      log.returnsendfunc = mailbox.autoforwardscript; log.returninterval = 5
  3386.      log.returnretry = 3; log.returnnumber = mailbox.autoforward; log.altFileName = voiceFile(mailbox, 'Introduction')
  3387.      call saveLogEntry('Outgoing', handle)
  3388.  
  3389. 'playvoice' 'avm:voices/BeingForwarded'
  3390. action = rc
  3391. select
  3392.   when action = 0 then nop
  3393.   when action = 1 then nop
  3394.   when action = 4 then signal stdfax
  3395.   when action = 5 then signal stddata
  3396.   when action = 8 then signal stdbusy
  3397.   when action = 12 then signal stdabort
  3398.   when action = 14 then signal stderror
  3399.   when action = 16 then signal stderror
  3400.   otherwise signal arexxerror
  3401. end
  3402.  
  3403.     call playNumber(mailbox.autoforward)
  3404.  
  3405. 'flushphonebuffer'
  3406.  
  3407. end
  3408. return
  3409.  
  3410. announceForwardNumber:
  3411. 'playvoice' 'avm:voices/AnnounceForward'
  3412. action = rc
  3413. select
  3414.   when action = 0 then nop
  3415.   when action = 1 then nop
  3416.   when action = 4 then signal stdfax
  3417.   when action = 5 then signal stddata
  3418.   when action = 8 then signal stdbusy
  3419.   when action = 12 then signal stdabort
  3420.   when action = 14 then signal stderror
  3421.   when action = 16 then signal stderror
  3422.   otherwise signal arexxerror
  3423. end
  3424.  
  3425. call playNumber(mailbox.autoforward)
  3426.  
  3427. 'playvoice' 'avm:voices/AnnounceAgain'
  3428. action = rc
  3429. select
  3430.   when action = 0 then nop
  3431.   when action = 1 then nop
  3432.   when action = 4 then signal stdfax
  3433.   when action = 5 then signal stddata
  3434.   when action = 8 then signal stdbusy
  3435.   when action = 12 then signal stdabort
  3436.   when action = 14 then signal stderror
  3437.   when action = 16 then signal stderror
  3438.   otherwise signal arexxerror
  3439. end
  3440. return
  3441.  
  3442. aaPageSysop:
  3443. procedure expose mailbox. mailbox pagedSysop
  3444. if mailbox.autopagescript ~= "" & mailbox.autopage ~= "" then do
  3445.      pagedSysop = 1
  3446.      handle = makeUniqueFile()
  3447.      call initLogEntry(); log.origmailbox = mailbox
  3448.      log.filename = 'avm:voices/autoforward'; log.type = 'voice'
  3449.      log.returnsendfunc = mailbox.autopagescript; log.returninterval = 5
  3450.      log.returnretry = 3; log.returnnumber = mailbox.autopage; log.altFileName = voiceFile(mailbox, 'Introduction')
  3451.      call saveLogEntry('Outgoing', handle)
  3452. end
  3453. return
  3454.  
  3455.  
  3456. stdabort:
  3457. exit
  3458.  
  3459. stdbusy:
  3460. exit
  3461.  
  3462. stderror:
  3463. exit
  3464.  
  3465. stdtimedout:
  3466. exit
  3467.  
  3468. stdfaxinstruct:
  3469. 'playvoice' 'avm:voices/FaxStarting'
  3470. action = rc
  3471. select
  3472.   when action = 0 then nop
  3473.   when action = 1 then do; call checkifabort; end
  3474.   when action = 4 then nop
  3475.   when action = 5 then nop
  3476.   when action = 8 then signal stdbusy
  3477.   when action = 12 then signal stdabort
  3478.   when action = 14 then nop
  3479.   when action = 16 then nop
  3480.   otherwise signal arexxerror
  3481. end
  3482.  
  3483. stdfax:
  3484. faxscript = getclip(address() || 'FAXSCRIPT')
  3485. if faxscript = '' then faxscript = 'handlefax'
  3486. if symbol('mailbox') = 'VAR' then address rexx faxscript address() mailbox
  3487. else address rexx faxscript address() 'anonymous'
  3488. exit
  3489.  
  3490. stddatainstruct:
  3491. 'playvoice' 'avm:voices/DataStarting'
  3492. action = rc
  3493. select
  3494.   when action = 0 then nop
  3495.   when action = 1 then do; call checkifabort; end
  3496.   when action = 4 then nop
  3497.   when action = 5 then nop
  3498.   when action = 8 then signal stdbusy
  3499.   when action = 12 then signal stdabort
  3500.   when action = 14 then nop
  3501.   when action = 16 then nop
  3502.   otherwise signal arexxerror
  3503. end
  3504.  
  3505. stddata:
  3506. datascript = getclip(address() || 'DATASCRIPT')
  3507. if datascript = '' then datascript = 'handledata'
  3508. if symbol('mailbox') = 'VAR' then address rexx datascript address() mailbox
  3509. else address rexx datascript address()
  3510. exit
  3511.  
  3512. checkifabort:
  3513. 'readnkeys' '1' '3'
  3514. action = rc
  3515. if action = 0 then value = result
  3516. select
  3517.   when action = 0 then do; if value = '*' then signal stdabort; end
  3518.   when action = 4 then nop
  3519.   when action = 5 then nop
  3520.   when action = 8 then signal stdbusy
  3521.   when action = 10 then nop
  3522.   when action = 12 then signal stdabort
  3523.   when action = 14 then signal stderror
  3524.   when action = 16 then signal stderror
  3525.   otherwise signal arexxerror
  3526. end
  3527. return
  3528.  
  3529.  
  3530.